Mybatis自带的两种分页方法
Mybatis有两种自带分页方法:RowBounds和PageHelper,其中前者是逻辑分页,后者是物理分页。(本文后续假设使用myabtis-generator生成mapper)
RowBounds
RowBounds方法有两个入参:offset和limit。它的实现是逻辑分页,即先一次性获取所有resultSet,然后从offset位置开始截取limit条记录,丢弃其它记录。
这种方式的优点是使用简单方便,但是性能差,因为每次是查询所有数据后进行截取。
使用方法:
新添加一个手写的HandwriteMapper.xml,在里面添加一条新的sql
ResultMapper.java
实际调用:
PageHelper
PageHelper是Mybatis开源的第三方插件,详情见官方文档:
如何使用分页插件pagehelper.github.io
这种方法的优点:使用物理分页,因此性能比上面的方法更好;调用也很方便
结论
大数据量的情况下推荐PageHelper,小数据量可以使用RowBounds
当然也可以使用原生的sql语句进行分页,但是那样略微繁琐,本文提出的方案已经可以满足日常需求(其实是懒得写了hhh)
碰到的bug!(划重点)
作者在使用RowBounds时碰到一个奇怪的bug。在对数据库数据分批次进行分页查询时,发现从第二页开始数据量为0,至今仍不知原因……既然如此,用pageHelper不香吗(手动狗头