Mybatis分頁的實現
阿新 • • 發佈:2022-05-29
**當我們在查詢大量資料的時候,我們往往使用分頁進行查詢,也就是每次處理小部分資料,這樣對資料庫壓力就在可控範圍內。Mybaits實現分頁的方式主要有Limit分頁、RowBounds分頁和PageHelper分頁。**
一.Limit分頁的實現(在SQL層面進行分頁)
1 //Limit分頁的實現語法 2 SELECT * FROM table LIMIT startIndex,pageSize 3 //startIndex 分頁的起始頁的前一頁,即分頁查詢的頁碼是以startIndex+1頁開始的。pageSize分頁搜尋的行數 4 5 SELECT * FROM table LIMIT 5,10; //檢索記錄行 6-15 6 7 //為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1。 8 SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last.(即從96到在以後一行) 9 10 //如果只給定一個引數,它表示返回最大的記錄行數目: 11 //換句話說,LIMIT n 等價於 LIMIT 0,n。 12 SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行
編寫步驟:
1.修改Mapper檔案
<select id = "selectUser" parameterType = "map" resultType = "user"> select* from user limit #{startIndex},#{pageSize} </select>
2.Mapper介面,引數為map
List<user> selectUser(Map<String,Intrger> map); //選擇全部使用者實現分頁
3.在測試類中傳入引數測試
//分頁查詢 , 兩個引數startIndex , pageSize @Test public void testSelectUser() { SqlSession session = MybatisUtils.getSession(); UserMapper mapper= session.getMapper(UserMapper.class); int currentPage = 1; //第幾頁 int pageSize = 2; //每頁顯示幾個 Map<String,Integer> map = new HashMap<String,Integer>(); map.put("startIndex",(currentPage-1)*pageSize); map.put("pageSize",pageSize); List<User> users = mapper.selectUser(map); for (User user: users){ System.out.println(user); } session.close(); }
二、RowBounds分頁(在java程式碼層面實現分頁)
步驟:
1.mapper介面
//選擇全部使用者RowBounds實現分頁 List<User> getUserByRowBounds();
2.mapper檔案
<select id="getUserByRowBounds" resultType="user"> select * from user </select>
3.測試類
@Test public void testUserByRowBounds() { SqlSession session = MybatisUtils.getSession(); int currentPage = 2; //第幾頁 int pageSize = 2; //每頁顯示幾個 RowBounds rowBounds = new RowBounds((currentPage-1)*pageSize,pageSize); //通過session.**方法進行傳遞rowBounds,[此種方式現在已經不推薦使用了] List<User> users = session.selectList("com.kuang.mapper.UserMapper.getUserByRowBounds", null, rowBounds); for (User user: users){ System.out.println(user); } session.close(); }