1. 程式人生 > 其它 >MyBatis(七)分頁

MyBatis(七)分頁

7、分頁

7.1 使用limit分頁

#語法
SELECT * FROM table LIMIT stratIndex,pageSize

SELECT * FROM table LIMIT 5,10; // 檢索記錄行 6-15  

#為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:   
SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last.  

#如果只給定一個引數,它表示返回最大的記錄行數目:   
SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行  

#換句話說,LIMIT n 等價於 LIMIT 0,n。 

使用Mybatis實現分頁,核心SQL

  1. 介面
//分頁
List<User> getUserByLimit(Map<String,Integer> map);
  1. Mapper.xml
<select id="selectUser" parameterType="map" resultType="user">
  select * from user limit #{startIndex},#{pageSize}
</select>
  1. 在測試類中傳入引數測試

    推斷:起始位置 = (當前頁面 - 1 ) * 頁面大小

@Test
public void getUserLimit() throws IOException {
    SqlSession sqlSession=MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("startIndex",1);
    map.put("pageSize",2);
    List<User> userList = mapper.getUserByLimit(map);
    for (User user : userList) {
        System.out.println(user);
    }
}

7.2、RowBounds分頁

不再使用SQL實現分頁,體現java面向物件思想,不常用,看得懂就好

  1. 介面
//分頁2
List<User> getUserByRowBounds(Map<String,Integer> map);
  1. Mapper.xml
<!--分頁2-->
<select id="getUserByRowBounds"  resultMap="UserMap">
    select * from mybatis.user
</select>
  1. 測試
@Test
public void getUserRowBounds() throws IOException {
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    //RowBounds實現
    int currentPage = 2;  //第幾頁
    int pageSize = 2;  //每頁顯示幾個
    RowBounds rowBounds = new RowBounds(currentPage, pageSize);

    //通過Java程式碼實現分頁
    List<User> userList = sqlSession.selectList("com.kuang.dao.UserMapper.getUserByRowBounds",null,rowBounds);
    for (User user : userList) {
        System.out.println(user);
    }
    sqlSession.close();
}