Spring Boot入门系列整合pagehelper,一秒实现分页功能!

之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类、mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能。接下来要说一说Mybatis 的分页功能:使用Mybatis-PageHelper插件,实现分页功能。

一、pagehelper介绍

pageHelper是一款非常简单、易用的分页插件,它能很好的集成在spring boot中。它是一个基于mybatis的一款插件,所以我们在使用它时,我们需要使用mybatis作为持久层框架。

github地址是https://github.com/pagehelper/Mybatis-PageHelper。

二、整合pagehelper

如果我们需要使用pageHelper的话,我们需要在spring boot项目中引入pageHelper的依赖。之前介绍过Spring Boot整合mybatis,这里就不介绍了。《Spring Boot入门系列(六)Spring Boot如何使用Mybatis XML 配置版【附详细步骤】》 。

1、pom 配置

增加pageHelper的依赖

com.github.pagehelper pagehelper-spring-boot-starter

注意:spring boot 引入的jar包必须是要pagehelper-spring-boot-starter ,如果单独引入pagehelper的话,会提示错误。

2、application.properties增加pagehelper 配置

# 分页框架pagehelper.helperDialect=mysqlpagehelper.reasonable=truepagehelper.supportMethodsArguments=truepagehelper.params=count=countSql

说明:

helperDialect :指定数据库,可以不配置,pagehelper插件会自动检测数据库的类型。

resonable :分页合理化参数默认false,当该参数设置为true 时,pageNum

params :用于从对象中根据属性名取值,可以配置pageNum,pageSize,count 不用配置映射的默认值。

supportMethodsArguments :分页插件会根据查询方法的参数中,自动根据params 配置的字段中取值,找到合适的值会自动分页。

到这里配置就完成了,在Springboot中整合就是这么简洁,约定大约配置的方式,大量的减少了配置文件的使用 。

3、实现分页

在原来的UserService类和UserServiceImpl 类中,增加 queryUserListPaged 接口和对应的方法实现。

@Overridepublic List queryUserListPaged(SysUser user, Integer page, Integer pageSize) { // 开始分页 PageHelper.startPage(page,pageSize); Example example = new Example(SysUser.class); Example.Criteria criteria = example.createCriteria();

if (!StringUtils.isEmptyOrWhitespace(user.getUsername())) { criteria.andLike("username", "%" + user.getUsername() + "%"); }

if (!StringUtils.isEmptyOrWhitespace(user.getNickname())) { criteria.andLike("nickname", "%" + user.getNickname() + "%"); }

List userList = userMapper.selectByExample(example);

return userList;}

分页的核心就一行代码, PageHelper.startPage(page,pageSize); 这个就表示开始分页。加了这个之后pagehelper 插件就会通过其内部的拦截器,将执行的sql语句,转化为分页的sql语句。

注意:使用时PageHelper.startPage(pageNum, pageSize)一定要放在列表查询的方法中,这样在查询时会查出相应的数据量且会查询出总数。

4、在原来的MybatisController 控制器中增加如下方法:

@RequestMapping("/queryUserListPaged")public JSONResult queryUserListPaged(Integer page) { if (page == null) { page = 1; }

int pageSize = 10;

SysUser user = new SysUser();

List userList = userService.queryUserListPaged(user, page, pageSize);

return JSONResult.ok(userList);}

说明:

调用的方法,只需将page页码,和pageSize 每页多少条这两个字段传入即可。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200812A013BO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券