1.手动在Mapper.xml拼LIMIT关键字
mapper代码
select * from tb_user limit #{pageNo}, #{pageSize}
缺点:不太方便,每次实现分页都要手动配置
2.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(newRowBounds(5,10));
优点
使用起来比直接拼limit简单。
缺点DB压力比较大,因为将结果暂存在db了。不适合数据量特别大的库表查询
3.Interceptor实现
通过拦截器在sql执行前,自动拼入limit相关字段实现分页。常见的插件比如PageHelper或Mybatis-plus的分页方式都采取的Interceptor方式实现。
若有收获,就点个赞吧