MyBatis(七)分頁
阿新 • • 發佈:2021-08-16
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
- 介面
//分頁
List<User> getUserByLimit(Map<String,Integer> map);
- Mapper.xml
<select id="selectUser" parameterType="map" resultType="user">
select * from user limit #{startIndex},#{pageSize}
</select>
-
在測試類中傳入引數測試
推斷:起始位置 = (當前頁面 - 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面向物件思想,不常用,看得懂就好
- 介面
//分頁2
List<User> getUserByRowBounds(Map<String,Integer> map);
- Mapper.xml
<!--分頁2-->
<select id="getUserByRowBounds" resultMap="UserMap">
select * from mybatis.user
</select>
- 測試
@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(); }