前言

之前一篇文章介绍了《SpringBoot+Mybatis+MySql学习》的整合,这一片扩展一下Mybatis的分页插件-Mybatis-PageHelper。

新建项目

首先,pom文件中加入pagehelper依赖,完整pom代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.dalaoyang</groupId><artifactId>springboot_mybatis_pagehelper</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot_mybatis_pagehelper</name><description>springboot_mybatis_pagehelper</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!--pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

配置文件增加PageHelper的配置,由于demo很简单,只用到了分页,所以没有增加其他配置,只设置了分页方言,完整代码如下:

##端口号
server.port=8888##日志级别
logging.level.com.dalaoyang.dao.UserMapper=debug##数据库url
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false
##数据库用户名
spring.datasource.username=root
##数据库密码
spring.datasource.password=root
##数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver#pagehelper分页插件配置
pagehelper.helperDialect=mysql

实体类User代码如下:

package com.dalaoyang.entity;import org.apache.ibatis.type.Alias;/*** @author dalaoyang* @Description* @project springboot_learn* @package com.dalaoyang.entity* @email 397600342@qq.com* @date 2018/6/22*/
@Alias("user")
public class User {private int id;private String user_name;private String user_password;public User(String user_name, String user_password) {this.user_name = user_name;this.user_password = user_password;}public User(int id, String user_name, String user_password) {this.id = id;this.user_name = user_name;this.user_password = user_password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUser_name() {return user_name;}public void setUser_name(String user_name) {this.user_name = user_name;}public String getUser_password() {return user_password;}public void setUser_password(String user_password) {this.user_password = user_password;}
}

启动类代码如下:

package com.dalaoyang;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringbootMybatisPagehelperApplication {public static void main(String[] args) {SpringApplication.run(SpringbootMybatisPagehelperApplication.class, args);}
}

新建一个UserMapper,之前介绍的整合mybatis是使用的mapper方式,本文选择使用注解方式,代码如下:

package com.dalaoyang.dao;import com.dalaoyang.entity.User;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;/*** @author dalaoyang* @Description* @project springboot_learn* @package com.dalaoyang.dao* @email 397600342@qq.com* @date 2018/6/22*/
@Mapper
public interface UserMapper {@Select("SELECT * FROM USER")Page<User> getUserList();
}

还是一如既往的使用controller作为测试,代码如下:

package com.dalaoyang.controller;import com.dalaoyang.dao.UserMapper;
import com.dalaoyang.entity.User;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*** @author dalaoyang* @Description* @project springboot_learn* @package com.dalaoyang.controller* @email 397600342@qq.com* @date 2018/6/22*/
@RestController
public class UserController {@AutowiredUserMapper userMapper;//http://localhost:8888/getUserList?pageNum=1&pageSize=2@RequestMapping("/getUserList")public Page<User> getUserList(Integer pageNum, Integer pageSize){PageHelper.startPage(pageNum, pageSize);Page<User>  userList= userMapper.getUserList();return userList;}
}

到这里项目就完全创建完成了。

测试

浏览器访问http://localhost:8888/getUserList?pageNum=1&pageSize=2,结果如下:

然后查看控制台如下:

可以看到sql已经进行分页了。

然后回头看controller的方法,返回的Page对象中包含了很多关于分页的参数等数据,下面是Page的代码,具体使用可以查看一下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//package com.github.pagehelper;import java.io.Closeable;
import java.util.ArrayList;
import java.util.List;public class Page<E> extends ArrayList<E> implements Closeable {private static final long serialVersionUID = 1L;private int pageNum;private int pageSize;private int startRow;private int endRow;private long total;private int pages;private boolean count;private Boolean reasonable;private Boolean pageSizeZero;private String countColumn;private String orderBy;private boolean orderByOnly;public Page() {this.count = true;}public Page(int pageNum, int pageSize) {this(pageNum, pageSize, true, (Boolean)null);}public Page(int pageNum, int pageSize, boolean count) {this(pageNum, pageSize, count, (Boolean)null);}private Page(int pageNum, int pageSize, boolean count, Boolean reasonable) {super(0);this.count = true;if (pageNum == 1 && pageSize == 2147483647) {this.pageSizeZero = true;pageSize = 0;}this.pageNum = pageNum;this.pageSize = pageSize;this.count = count;this.calculateStartAndEndRow();this.setReasonable(reasonable);}public Page(int[] rowBounds, boolean count) {super(0);this.count = true;if (rowBounds[0] == 0 && rowBounds[1] == 2147483647) {this.pageSizeZero = true;this.pageSize = 0;} else {this.pageSize = rowBounds[1];this.pageNum = rowBounds[1] != 0 ? (int)Math.ceil(((double)rowBounds[0] + (double)rowBounds[1]) / (double)rowBounds[1]) : 0;}this.startRow = rowBounds[0];this.count = count;this.endRow = this.startRow + rowBounds[1];}public List<E> getResult() {return this;}public int getPages() {return this.pages;}public Page<E> setPages(int pages) {this.pages = pages;return this;}public int getEndRow() {return this.endRow;}public Page<E> setEndRow(int endRow) {this.endRow = endRow;return this;}public int getPageNum() {return this.pageNum;}public Page<E> setPageNum(int pageNum) {this.pageNum = this.reasonable != null && this.reasonable && pageNum <= 0 ? 1 : pageNum;return this;}public int getPageSize() {return this.pageSize;}public Page<E> setPageSize(int pageSize) {this.pageSize = pageSize;return this;}public int getStartRow() {return this.startRow;}public Page<E> setStartRow(int startRow) {this.startRow = startRow;return this;}public long getTotal() {return this.total;}public void setTotal(long total) {this.total = total;if (total == -1L) {this.pages = 1;} else {if (this.pageSize > 0) {this.pages = (int)(total / (long)this.pageSize + (long)(total % (long)this.pageSize == 0L ? 0 : 1));} else {this.pages = 0;}if (this.reasonable != null && this.reasonable && this.pageNum > this.pages) {this.pageNum = this.pages;this.calculateStartAndEndRow();}}}public Boolean getReasonable() {return this.reasonable;}public Page<E> setReasonable(Boolean reasonable) {if (reasonable == null) {return this;} else {this.reasonable = reasonable;if (this.reasonable && this.pageNum <= 0) {this.pageNum = 1;this.calculateStartAndEndRow();}return this;}}public Boolean getPageSizeZero() {return this.pageSizeZero;}public Page<E> setPageSizeZero(Boolean pageSizeZero) {if (pageSizeZero != null) {this.pageSizeZero = pageSizeZero;}return this;}public String getOrderBy() {return this.orderBy;}public <E> Page<E> setOrderBy(String orderBy) {this.orderBy = orderBy;return this;}public boolean isOrderByOnly() {return this.orderByOnly;}public void setOrderByOnly(boolean orderByOnly) {this.orderByOnly = orderByOnly;}private void calculateStartAndEndRow() {this.startRow = this.pageNum > 0 ? (this.pageNum - 1) * this.pageSize : 0;this.endRow = this.startRow + this.pageSize * (this.pageNum > 0 ? 1 : 0);}public boolean isCount() {return this.count;}public Page<E> setCount(boolean count) {this.count = count;return this;}public Page<E> pageNum(int pageNum) {this.pageNum = this.reasonable != null && this.reasonable && pageNum <= 0 ? 1 : pageNum;return this;}public Page<E> pageSize(int pageSize) {this.pageSize = pageSize;this.calculateStartAndEndRow();return this;}public Page<E> count(Boolean count) {this.count = count;return this;}public Page<E> reasonable(Boolean reasonable) {this.setReasonable(reasonable);return this;}public Page<E> pageSizeZero(Boolean pageSizeZero) {this.setPageSizeZero(pageSizeZero);return this;}public Page<E> countColumn(String columnName) {this.countColumn = columnName;return this;}public PageInfo<E> toPageInfo() {PageInfo<E> pageInfo = new PageInfo(this);return pageInfo;}public PageSerializable<E> toPageSerializable() {PageSerializable<E> serializable = new PageSerializable(this);return serializable;}public <E> Page<E> doSelectPage(ISelect select) {select.doSelect();return this;}public <E> PageInfo<E> doSelectPageInfo(ISelect select) {select.doSelect();return this.toPageInfo();}public <E> PageSerializable<E> doSelectPageSerializable(ISelect select) {select.doSelect();return this.toPageSerializable();}public long doCount(ISelect select) {this.pageSizeZero = true;this.pageSize = 0;select.doSelect();return this.total;}public String getCountColumn() {return this.countColumn;}public void setCountColumn(String countColumn) {this.countColumn = countColumn;}public String toString() {return "Page{count=" + this.count + ", pageNum=" + this.pageNum + ", pageSize=" + this.pageSize + ", startRow=" + this.startRow + ", endRow=" + this.endRow + ", total=" + this.total + ", pages=" + this.pages + ", reasonable=" + this.reasonable + ", pageSizeZero=" + this.pageSizeZero + '}' + super.toString();}public void close() {PageHelper.clearPage();}
}

其他

关于更多Mybatis-PageHelper配置及介绍可以查看下面网站:
https://gitee.com/free/Mybatis_PageHelper
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

源码下载 :大老杨码云

个人网站:https://www.dalaoyang.cn

关注作者公众号

转载于:https://www.cnblogs.com/dalaoyang/p/9214217.html

SpringBoot使用Mybatis-PageHelper相关推荐

  1. Springboot+Mybatis+PageHelper 分页、排序

    Springboot+Mybatis+PageHelper 分页.排序 升序 asc.降序 desc <!-- 继承 spring boot 父包--><parent>< ...

  2. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  3. SpringBoot集成MyBatis的分页插件PageHelper(回头草)

    俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心 ...

  4. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

  5. BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...

    重构代码,方法抛出异常:BindingException: Invalid bound statement (not found) 提示信息很明显:mybatis没有提供某方法 先不解释问题原因和排查 ...

  6. .jar中没有主清单属性_如何在springboot中使用PageHelper分页插件

    目录: PageHelper简介 使用maven引入相关的jar 配置PageHelper方言 编写业务逻辑代码 PageInfo类中几个常用属性的注释 一. PageHelper简介 PageHel ...

  7. springboot基于mybatis扫描jar包中的controller、service、dao、xml

    springboot基于mybatis扫描jar包中的controller.service.dao.xml 最近有这样的需求,是将某个业务模块接口,比如新闻的接口模块 作为一个公共固定的模块,整个包括 ...

  8. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 1.前言 本文主要介绍使用SpringBoot与shiro实现基 ...

  9. Springboot 整合 Mybatis 的完整 Web 案例

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 推荐一本书<腾讯 ...

  10. springboot整合mybatis

    3.springboot整合mybatis 首先新建一个项目,勾选上我们需要的 1.springboot配置数据库连接池druid druid学习地址 https://github.com/aliba ...

最新文章

  1. 栈和队列存储结构总结
  2. github 视觉测量_计算机视觉八大任务全概述:PaddlePaddle工程师详解热门视觉模型...
  3. 独家 | 手把手教你用Python 3创建用于机器学习开发的Linux虚拟机(附安装教程代码)...
  4. 处女座与cf(思维题)
  5. jMeter Thread group 对应的 constant timer
  6. 基于Linux的嵌入式浏览器的实现
  7. 为对象分配内存TLAB
  8. 编译hotspot_从Hotspot JIT编译器打印生成的汇编代码
  9. 关于webstorm 配置 banbel
  10. 智慧北京02_初步ui框架_ 主界面_viewPager事件_xUtils_slidingMenu_网络缓存_数据传递...
  11. NOD 32 企业版远程管理服务器病毒库更新失败
  12. python偏最小二乘法公式,python3 偏最小二乘法实现
  13. scratch ios html,scratch手机版
  14. 网络语言C位意思,网络流行语“C位出道”探究
  15. 计算机专业应届毕业生找工作一定要知道的面试题--必背版
  16. 使用Echarts在网页中显示漂亮图例实战(Bootstrap+Django+ECharts+Jinja2使用入门)
  17. Linux-------线程安全
  18. linux对外开放端口号
  19. 70个数据分析常用网址,我先收藏了!
  20. 皮卡丘靶场的搭建以及SQL注入攻击(加强版)

热门文章

  1. pyqt与mysql例子_PyQt 连接MySql数据库,C++代码转Python3代码
  2. 可以编写html的文件吗,我可以使用HTML5/JS编写文件吗?
  3. java quartz CronScheduleBuilder
  4. SpringBoot POM 继承(spring-boot-starter-parent)
  5. Spring mvc 中文乱码
  6. python-packaging 命令行脚本
  7. python module
  8. cuda Memory Fence Functions
  9. Java Spring AspectJ
  10. Flask make_response(*args)