#mybatis-pager 本插件实现方案是拦截Executor的query方法,还有一种方案是拦截StatementHandler的prepare方法。 拦截Executor主要是为了实现'查询总数的SQL'能够在mapper启用缓存时也缓存起来,StatementHandler无法实现。
参考了两个实现: ####http://git.oschina.net/free/Mybatis_PageHelper ####https://github.com/miemiedev/mybatis-paginator
这两个实现在处理分页参数时都比较复杂(都采用把传入的当前parameterObject拷贝一个,然后添加分页所需的参数--ParameterMapping 和 ParameterMapping对应的值),本插件采用拷贝一个BoundSql,在其上添加ParameterMapping,而ParameterMapping对应的值放在additionalParameters。
插件参考了Hibernate Dialect的处理,具体请自行查看Hibernate源码。
#使用方法 mybatis.cfg.xml配置文件中添加
<plugins>
<plugin interceptor="org.mybatis.plugin.pager.PageQueryInterceptor">
<property name="offsetAsPageNum" value="true" />
</plugin>
</plugins>
调用方法
sqlsession.selectList(String statement, Object parameter, RowBounds rowBounds) 或
sqlsession.selectMap(String statement, Object parameter, String mapKey, RowBounds rowBounds)
selectList
调用返回值为PageList
参数offsetAsPageNum
表示是否把传入的RowBounds
的offset
属性当做pageNumber
处理,默认为false
。(RowBounds
的limit
属性是pageSize)