分页的目的是为了减少数据的处理量
limit分页
limit分页的sql语法
-- 语法
select * from `user` limit startIndex,pageSize;
select * from `user` limit 2;
-- 相当于
select * from `user` limit 0,2;
例:
接口
//分页查询
List<User> getUserByLimit(Map<String, Integer> map);
Mapper.xml
<!-- 分页-->
<select id="getUserByLimit" parameterType="map" resultMap="Usermap">
select * from mybatis.user limit #{startIndex},#{pageSize}
</select>
测试
@Test
public void getUserByLimit(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Integer> map = new HashMap<>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userList = mapper.getUserByLimit(map);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
输出结果
RowBounds分页
RowBounds分页的好处是不使用sql实现分页
例:
接口
List<User> getUserByRowBounds();
Mapper.xml
<select id="getUserByRowBounds" resultMap="Usermap">
select id, name, pwd from `user`
</select>
测试
@Test
public void getUserByRowBounds() {
SqlSession sqlSession = null;
try {
sqlSession = MybatisUtils.getSqlSession();
RowBounds rowBounds = new RowBounds(1,2);
List<User> userList = sqlSession.selectList("com.yuan.dao.UserMapper.getUserByRowBounds",null, rowBounds);
for (User user : userList) {
logger.info(user);
}
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
分页插件
官方文档:https://pagehelper.github.io/