PageHelper项目地址:
oschub的项目地址:http://git.oschina.net/free/Mybatis_PageHelper
github的项目地址:https://github.com/pagehelper/Mybatis-PageHelper
PageHelper的使用例子
https://gitee.com/xuguolong/mybatis-pagehelper-sample
这个大家再熟悉不过的MySQL的分页查询语句
select * from t_user limit 0 , 15
1、简单了解分页的几个关键要素
页码(pageNum): 即表示当前查询第几页的数据
每页大小(pageSize):即每页显示的记录数
总页数 :当前查询满足条件的总页数,总页数 = 总记录数/pageSize
总记录数:当前查询满足条件的总记录条数
2、分页的基本思想
- 根据pageNum和pageSize计算它的数据偏移量
- 从当前数据偏移量开始,取出pageSize条记录
3、不使用插件,使用Mybatis自带的RowBounds实现分页
- 使用Mybatis自带的分页功能(PageBounds)
RowBounds rowBounds = new RowBounds(0 ,10);
List<User> users = userMapper.selectUserListWithRowBounds(null ,rowBounds);
System.out.println(users);
for(User user :users){
System.out.println(user);
}
缺点:
1、内存中分页,即它会先把所有满足条件的数据都查询出来,然后再在内存中筛选分页数据,这个对于大数据量的情况下,是非常致命的。
2、没有统计总记录数、总页数需要自己计算
- 自己实现分页功能
/**
* 自己实现分页逻辑
*/
@Test
public void page2() {
List<User> users = userMapper.selectUserListForPage(null ,null ,10 ,15);
System.out.println(users);
for(User user :users){
System.out.println(user);
}
}
xml配置:
<!--自己实现分页逻辑 -->
<select id="selectUserListForPage" parameterType="map" resultType="com.xgl.mybatis.study.model.User">
select * from tb_user
<where>
<if test="id !=null">
and id=#{id}
</if>
<if test="name != null ">
and name=#{name}
</if>
</where>
limit #{pageOffset} ,#{pageSize}
</select>
缺点:
1、总记录数、总页数需要自己计算
2、代码不能重复利用