1. 程式人生 > 其它 >mybatis中使用limit實現分頁,以及Map的用法

mybatis中使用limit實現分頁,以及Map的用法

技術標籤:javamybatismysql

1、limit實現分頁

limit是sql中存在的,可以實現分頁查詢,其使用方法為:

select * from table1 limit startIndex,pageStze
--這裡的startIndex與pageSize在使用時用整數代替

顧名思義,limit需要兩個引數:startIndex是標識頁面的其實下標的,就是從第多少條記錄開始分頁顯示;pageSize是每一個頁面顯示的記錄的條數。比如:

select * from table1 limit 35

就表示從表中第三條記錄開始,每五條記錄作為一頁來顯示。mybatis中可以傳入這兩個引數。

2、Map的用法

使用Map要先匯入util包(當然IDEA可以自動匯入)
Map的核心是鍵值對,直接用了就懂了,上程式碼:

HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",0);
map.put("pageSize",3);

建立一個Map的例項, HashMap<String,Integer> 是定義鍵值對的“結構”,String就是key(鍵)的型別,Integer就是這個key的value(值)的型別,當然這個可以自己設定。然後就可呼叫Map例項的方法 put() 來存放一個鍵值對了,當然一個Map例項可存放多個鍵值對。利用Map傳參較為方便。

3、mybatis中實現分頁查詢

這跟之前的查詢也沒啥區別,只是在sql語句上使用了limit。上程式碼:
編寫介面中的方法

    //分頁測試
    List<User> getUserByLimit(Map<String,Integer> map);

在配置中“實現”這個方法(注意這裡取map中的引數是#{鍵的名字})

    <!--使用map來傳參-->
    <select id="getUserByLimit" parameterType="map" resultType="User"
>
<!--limit後面跟兩個引數,第一個引數是顯示分頁的起始下標,第二個是頁面的大小--> select * from mybatis.user limit #{startIndex},#{pageSize}; </select>

測試

    @Test
    public void limitTest00(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao mapper = sqlSession.getMapper(UserDao.class);

        //建立map來存放參數,map就是鍵值對,定義時HashMap<String,Integer>轉下一行
        //String就是key的型別,Integer就是這個健的值的型別,當然這兩個型別可自行設定
        HashMap<String,Integer> map = new HashMap<String,Integer>();
        map.put("startIndex",0);
        map.put("pageSize",3);

        List<User> usersByPage = mapper.getUserByLimit(map);

        for(User user:usersByPage){
            System.out.println(user.getId());
        }

    }