Fork me on GitHub

mybatis集成分页插件pageHelper

前言

web开发少不了分页,本文将简单介绍使用基于spring-boot + mybatis + pageHelper技术实现数据库分页。

本文算是对上一篇spring-boot集成mybatis的一个补充。

pageHelper简介

使用MyBatis作为数据访问层进行对sql语句分页的最好用的插件。

建议去pageHelper官网看一看。

特点:

  • 物理分页:支持常见的12种数据库。Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer等。
  • 支持多种分页方式:支持常见的RowBounds(PageRowBounds),PageHelper.startPage 方法调用,Mapper 接口参数调用。
  • QueryInterceptor 规范:使用 QueryInterceptor 规范,开发插件更轻松。

集成pageHelper

三步完成集成:

  • maven依赖
  • 配置pageHelper
  • 代码使用及测试

maven依赖

此处依赖在集成了mybatis的基础上增加:

<!-- pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>

配置pageHelper

application.yml里增加:

# 分页配置
pagehelper:
  helper-dialect: mysql
  reasonable: "true"
  support-methods-arguments: "true"
  params: count=countSql

代码使用及测试

根据官网之如何在代码中使用中的推荐,我们使用静态方法PageHelper.startPage来实现分页。

首先是SbpUserMapper接口增加方法:

public interface SbpUserMapper {
    List<SbpUser> getAll();
}

对应的SbpUserMapper.xml增加sql:

<select id="getAll" resultMap="BaseResultMap">
    SELECT * FROM sbp_user
</select>

代码使用,传参当前页为1,每页条数显示5条:

@Test
@Rollback
public void pageByPageHelper() throws Exception {
    PageHelper.startPage(1, 5);
    List<SbpUser> users = sbpUserMapper.getAll();
    Page<SbpUser> page = (Page<SbpUser>) users;
    System.out.println("total count :" + page.getTotal());
    System.out.println("pages :" + page.getPages());
    System.out.println("data :" + page.getResult());
}

输出:

total count :21
pages :5
data :Page{count=true, pageNum=1, pageSize=5, startRow=0, endRow=5, total=21, pages=5, reasonable=true, pageSizeZero=false}

还有更多的用法请参考官方文档。

结束语

pageHelper还是非常好用的,简单,集成方便,是和mybatis搭配的分页插件首选。除此之外,大家一定要会自行写分页接口,除此之外还要 知其然,知其所以然。看其源码实现与设计理念,得到的不仅仅是分页。

-------------本文结束,感谢您的阅读-------------
贵在坚持,如果您觉得本文还不错,不妨打赏一下~
0%