LIMIT关键字
-
mapper代码
select * from tb_user limit #{pageNo}, #{pageSize} -
业务层直接调用
public List findByPageInfo(PageInfo info) {
return userMapper.selectByPageInfo(info);
}
3,优点
灵活性高,可优化空间大
mysql分页语句优化
4,缺点
实现复杂。
RowBounds实现分页
Mybatis提供RowBounds类来实现逻辑分页。RowBounds中有2个字段offset和limit。这种方式获取所有的ResultSet,从ResultSet中的offset位置开始获取limit个记录。但这并不意味着JDBC驱动器会将所有的ResultSet存放在内存,实际上只加载小部分数据到内存,如果需要,再加载部分数据到内存。
-
mapper代码
select * from user -
dao代码
List<User> selectPage(RowBounds rowBounds);
-
分页查询
List<User> users = userMapper.selectPage(new RowBounds(5, 10)); log.info("users:{}",users);
查询结果:
users:[User(id=6, username=柳云璇, grade=小三(5)班, age=25, phone=17358053274, sex=女), User(id=7, username=酆雨寒, grade=高一(5)班, age=19, phone=15394214112, sex=女), User(id=8, username=郑春阳, grade=小三(7)班, age=24, phone=15004202411, sex=男)]
- 优点
使用起来比直接limit简单。
5,缺点
DB压力比较大,因为将结果暂存在db了。
Interceptor实现
-
自定义Interceptor
@Intercepts({@Signature(type = S