Mybatis分页插件

添加项目依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.0.3</version>
</dependency>

修改mybatis核心配置文件,添加plugin

<plugin interceptor="com.github.pagehelper.PageHelper">
    <!-- 4.0.0之后版本能够不设置该参数 -->
    <property name="dialect" value="mysql"/>
    <!-- 该参数默认为false -->
    <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
    <!-- 和startPage中的pageNum效果同样-->
    <property name="offsetAsPageNum" value="true"/>
    <!-- 该参数默认为false -->
    <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
    <property name="rowBoundsWithCount" value="true"/>
    <!-- 设置为true时,若是pageSize=0或者RowBounds.limit = 0就会查询出所有的结果 -->
    <!-- (至关于没有执行分页查询,可是返回结果仍然是Page类型)-->
    <property name="pageSizeZero" value="false"/>
    <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
    <!-- 启用合理化时,若是pageNum<1会查询第一页,若是pageNum>pages会查询最后一页 -->
    <!-- 禁用合理化时,若是pageNum<1或pageNum>pages会返回空数据 -->
    <property name="reasonable" value="true"/>
    <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
    <!-- 增长了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
    <!-- 能够配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->
    <!-- 不理解该含义的前提下,不要随便复制该配置 -->
    <property name="params" value="pageNum=start;pageSize=limit;"/>
    <!-- 支持经过Mapper接口参数来传递分页参数 -->
    <property name="supportMethodsArguments" value="true"/>
    <!-- always老是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
    <property name="returnPageInfo" value="check"/>
</plugin>

示例

PageList<SettleFlowPendingModel> pageList = new PageList<SettleFlowPendingModel>();
Paginator pageNav = new Paginator();
pageNav.setItemsPerPage(pageSize > 0 ? pageSize : 10);
int count = settleFlowPendingMapper.countByExample(testExample);
if (count > 0) {
    pageNav.setItems(count);
    pageNav.setPage(page > 0 ? page : 1);
    //设置页码和每页的数量,紧跟着的第一个select方法会被分页
    PageHelper.startPage(pageNav.getPage(), pageSize);
    //该select会被分页查询
    List<SettleFlowPending> list = settleFlowPendingMapper.selectByExample(testExample);
    pageList.addAll(convert.convert2Model(list, SettleFlowPendingModel.class));
    pageList.setPaginator(pageNav);
}
相关文章
相关标签/搜索