关于Springboot中使用Pagehelper说明

1. Pagehelper简介

PageHelper官网
关于Springboot中使用Pagehelper说明_第1张图片

2. springboot整合pagehelper说明

2.1 引入依赖

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

2.2 配置pagehelper

yml配置与java配置二选一即可

2.2.1 yml配置

pagehelper:
  params: count=countSql
  reasonable: true
  support-methods-arguments: true
  auto-dialect: mysql

2.2.2 JAVA配置

@Configuration
@ConditionalOnProperty(name = "pagehelper.supportMethodsArguments")
public class PageHelperConfig {

    /**
     * 注入pageHelper配置
     */
    @Bean
    public PageHelper getPageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        properties.setProperty("params", "count=countSql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

2.2.3 配置说明

  1. helperDialect :分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置 helperDialect 属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:oracle , mysql , mariadb , sqlite , hsqldb , postgresql, db2 , sqlserver , informix , h2 ,sqlserver2012 , derby
    特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012 ,否则会使用 SqlServer2005 的方式进行分页。 你也可以实现 AbstractHelperDialect ,然后配置该属性为实现类的全限定名称即可使用自定义的实现方法。
  2. reasonable :分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。默认 false 时,直接根据参数进行查询
  3. supportMethodsArguments :支持通过 Mapper 接口参数来传递分页参数,默认值 false ,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest 。
  4. params :为了支持 startPage(Object params) 方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable ,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero= pageSizeZero

2.3 使用pagehelper

controller.java

	@PostMapping("/logs")
    public CommonResult listLogs(Integer currentPage,Integer size,SelectLogRequest request) {
        return new CommonResult(logService.queryByLimit(currentPage,size,request);
    }

logService.java

 /**
     * 按条件分页查询数据
     * @param currentPage 当前页码
     * @param size 当前页大小
     * @param request 查询条件
     * @return
     */
    PageInfo<LogPo> queryByLimit(Integer currentPage, Integer size, SelectLogRequest request);

logServiceImpl.java

 /**
     * 按条件分页查询数据
     *
     * @param request 分页查询条件
     * @return 日志列表
     */
    @Override
    public PageInfo<LogPo> queryByLimit(Integer currentPage, Integer size, SelectLogRequest request) {
        PageHelper.startPage(currentPage, size);

        //按条件分页查询
        List<LogPo> logs = logMapper.queryByLimit(request);
        PageInfo<LogPo> pageInfo = new PageInfo<LogPo>(logs);
        return pageInfo;
    }

logMapper.java

List<LogPo> queryByLimit(@Param("logDto") SelectLogRequest logDto);

logMapper.xml

<select id="queryByLimit" resultMap="PublishLogsMap">
        select
        id, properties_path, log_path, version, operate, execute_user, execute_result, gmt_create
        from publish_logs
        <include refid="queryWhere">include>
        order by gmt_create desc
    select>

使用说明

  • 返回值为PageInfo类型
  • 使用PageHelper.startPage(currentPage, size);开始分页
  • 查询符合条件的记录,并将记录封闭到PageInfo中返回

你可能感兴趣的:(springboot,pagehelper)