![54b87b2aa42f76ee335d7552c057042e.png](https://img-blog.csdnimg.cn/img_convert/54b87b2aa42f76ee335d7552c057042e.png)
最简洁的分页插件PageHelper
简介
大部分后台管理项目,用的最多的展现方式是列表显示,所以我把列表查询中的分页插件拿出来写一下,方便以后写代码的时候直接复制粘贴。在我们最熟悉的springboot微服务开发中,持久型框架mybatis使用PageHelper还是比较方便的。下面我们来看一下分页插件PageHelper的简单使用方法。
01
首先在pom.xml中pageHelper引入
<dependencies> <dependency> <groupId>com.github.pagehelpergroupId> <artifactId>pagehelperartifactId> <version>4.1.6version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.4.6version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <scope>runtimescope> dependency>dependencies>
02
配置application.yml文件
#数据库链接datasource: driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/hzc_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: root password: root tomcat: initial-size: 5 max-active: 30#配置mybatismybatis: mapperLocations: classpath:mybatis/mapper*.xml typeAliasesPackage: com.ten.cn.*.model#配置pageHelperpageHelper: reasonable: "true" supportMethodsArguments: "true" returnPageInfo: check params: count=countSql
03
建立一个分页传输数据的实体,用来传输当前页和分页条数
package com.ten.ms.cn.sys.bean;import com.ten.ms.cn.sys.model.User;/*** * 用户分页实体 * @author:lcj */public class UserPageInvo extends User { /** * 页数 */ private Integer page; /** * 条数 */ private Integer rows; public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getRows() { return rows; } public void setRows(Integer rows) { this.rows = rows; }}
05
创建一个分页配置方法
package com.ten.ms.cn.common.config;import com.github.pagehelper.PageHelper;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.Properties;/*** * 分页配置 * @author:lcj */@Configurationpublic class PageHelperConfig { /** * 配置mybatis的分页插件pageHelper * * @return */ @Bean public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("offsetAsPageNum", "true"); properties.setProperty("rowBoundsWithCount", "true"); properties.setProperty("reasonable", "true"); properties.setProperty("dialect", "postgresql");//配置postgresql数据库的方言支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库 pageHelper.setProperties(properties); return pageHelper; }}
06
创建一个返回实体
package com.ten.ms.cn.common.bean;/** * 全局统一json返回值接口 * * @author user */public class ResultInfo { /** * 错误编号 */ private String errorCode = "0"; private String code = "200"; /** * 错误信息 */ private String errorMessage; /** * 包装实体 */ private Object data; /** * 返回dataGrid的总页数 */ private long total; public ResultInfo() { } /** * 返回分页数据数据 */ private Object rows; public ResultInfo(String errorCode, String errorMessage, Object data, long total, Object rows) { this.errorCode = errorCode; this.errorMessage = errorMessage; this.data = data; this.total = total; this.rows = rows; } public ResultInfo(String errorCode, String errorMessage, Object data) { this.errorCode = errorCode; this.errorMessage = errorMessage; this.data = data; } public String getErrorCode() { return errorCode; } public void setErrorCode(String errorCode) { this.errorCode = errorCode; } public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public long getTotal() { return total; } public void setTotal(long total) { if ((int) total == 0) { total = 1; } this.total = total; } public Object getRows() { return rows; } public void setRows(Object rows) { this.rows = rows; } public String getCode() { return code; } public void setCode(String code) { this.code = code; }}
07
简单的分页实例
@RequestMapping(value = "/getUserList", method = {RequestMethod.GET, RequestMethod.POST})@ResponseBodypublic ResultInfo getUserList(@RequestBody SysUserPageInvo sysUserPageInvo) { // 定义传参 int page = sysUserPageInvo != null && sysUserPageInvo.getPage() != null ? sysUserPageInvo.getPage() : 0;// 当前页数 int rows = sysUserPageInvo != null && sysUserPageInvo.getRows() != null ? sysUserPageInvo.getRows() : 10;//一页多少条数据 ResultInfo result = new ResultInfo(); PageHelper.startPage(page, rows); // 获取数据 List list = this.sysUserService.getUserList(sysUserPageInvo); PageInfo pageInfo = new PageInfo(list); // 当前分页数据 Page pages = (Page) list; // 总共多少条数据 result.setTotal(pageInfo.getTotal()); result.setRows(pages); return result;}
08
最终的页面展示
总
结
PageHelper的使用大概就是这样返回给前台的数据是当前分页的list列表和数据的总数。同样如果后台返回固定的json格式数据,前台自动加载到列表控件中。后续我会分享更多的技术相关的内容,请大家多多关注。
![6dcd0935e0603dc163cda1c4efd567d2.gif](https://img-blog.csdnimg.cn/img_convert/6dcd0935e0603dc163cda1c4efd567d2.gif)
扫码关注我们
![7befc1bc83cea179326531fffa3e6493.png](https://img-blog.csdnimg.cn/img_convert/7befc1bc83cea179326531fffa3e6493.png)