思考:为什么要使用分页?
减少数据的处理量
使用limit分页
语法: select * from user limit startIndex,pageSize;
- 接口
/**
* 分页
* @param map
* @return
*/
List<User> getUserByLimit(Map<String,Integer> map);
- Mapper.xml
<!--分页-->
<select id="getUserByLimit" parameterType="map" resultMap="UserMap">
select * from user limit #{startIndex},#{pageSize}
</select>
- 测试类
@Test
public void getUserLimit(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String,Integer> map = new HashMap<>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userByLimit = mapper.getUserByLimit(map);
userByLimit.forEach(u -> {
System.out.println(u);
});
}
RowBounds分页
不通过sql处实现分页
- 接口
/**
* RowBounds分页
* @return
*/
List<User> getUserRowBounds();
- mapper.xml
<!--RowBounds实现分页-->
<select id="getUserRowBounds" resultMap="UserMap">
select * from user
</select>
- 测试类
@Test
public void getUserRowBounds(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
// rowBounds实现
RowBounds rowBounds = new RowBounds(1, 2);
// 通过java层面实现分页
List<User> users = sqlSession.selectList("com.mybatisstudy.dao.UserMapper.getUserRowBounds",null,rowBounds);
users.forEach(user -> {
System.out.println(user);
});
sqlSession.close();
}
分页插件PageHelper
PageHelper文档地址 (pagehelper.github.io)
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>最新版本</version>
</dependency>