1. 程式人生 > 其它 >Mybatis分頁的實現

Mybatis分頁的實現

**當我們在查詢大量資料的時候,我們往往使用分頁進行查詢,也就是每次處理小部分資料,這樣對資料庫壓力就在可控範圍內。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();
}