spring-boot PageHelper
分页插件PageHelper
参看了pagehelper-spring-boot,使用起来非常放方便,关于更多PageHelper可以点击https://github.com/pagehelper/Mybatis-PageHelper。
添加maven依赖
根据上面地址中的说明,只需要添加如下依赖,并且可以不再mybatis的依赖
- <!--分页插件-->
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper-spring-boot-starter</artifactId>
- <version>1.0.0</version>
- </dependency>
pagehelper的使用
我增加了如下测试代码。
- @RequestMapping("/find/mybatis/page")
- public String findUserPageFromMybatis(HttpServletRequest request, Integer pageNum, Integer pageSize) {
- pageNum = pageNum == null ? 1 : pageNum;
- pageSize = pageSize == null ? 10 : pageSize;
- PageHelper.startPage(pageNum, pageSize);
- List<UserMo> list = userMapper.selectUserList();
- PageInfo pageInfo = new PageInfo(list);
- Page page = (Page) list;
- return "PageInfo: " + JSON.toJSONString(pageInfo) + ", Page: " + JSON.toJSONString(page);
- }
运行程序后在浏览器输入 http://127.0.0.1:8080/find/mybatis/page,会看到如下输出。
- PageInfo: {
- "endRow": 1,
- "firstPage": 1,
- "hasNextPage": true,
- "hasPreviousPage": false,
- "isFirstPage": true,
- "isLastPage": false,
- "lastPage": 8,
- "list": [
- {
- "createDate": 1483586613000,
- "id": 1,
- "isDeleted": 0,
- "modifyDate": 1483586613000,
- "money": 1.20,
- "name": "sss"
- }
- ],
- "navigateFirstPage": 1,
- "navigateLastPage": 8,
- "navigatePages": 8,
- "navigatepageNums": [1,2,3,4,5,6,7,8],
- "nextPage": 2,
- "pageNum": 1,
- "pageSize": 1,
- "pages": 11,
- "prePage": 0,
- "size": 1,
- "startRow": 1,
- "total": 11
- },
- Page: [
- {
- "createDate": 1483586613000,
- "id": 1,
- "isDeleted": 0,
- "modifyDate": 1483586613000,
- "money": 1.20,
- "name": "sss"
- }
- ]
重要提示
- 只有紧跟在 PageHelper.startPage 方法后的第一个 MyBatis 的查询(select)方法会被分页。
- 请不要在系统中配置多个分页插件(使用 spring 时,mybatis-config.xml 和 Spring<bean> 配置方式,请选择其中一种,不要同时配置多个分页插件)。
- 对于带有 for update 的 sql,会抛出运行时异常,对于这样的 sql 建议手动分页,毕竟这样的 sql 需要重视。
- 由于嵌套结果方式会导致结果集被折叠,因此分页查询的结果在折叠后总数会减少,所以无法保证分页结果数量正确。
当spring boot集成好mybatis时候需要进行分页,我们首先添加maven支持
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
< dependency > < groupId >com.github.pagehelper</ groupId > < artifactId >pagehelper</ artifactId > < version >5.1.2</ version > </ dependency > < dependency > < groupId >com.github.pagehelper</ groupId > < artifactId >pagehelper-spring-boot-autoconfigure</ artifactId > < version >1.2.3</ version > </ dependency > < dependency > < groupId >com.github.pagehelper</ groupId > < artifactId >pagehelper-spring-boot-starter</ artifactId > < version >1.2.3</ version > </ dependency > |
方式一:我们在application.yml(spring 需要读取的yml)中加入
1
2
3
4
5
|
pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql |
然后重启即可。
配置文件最终会被java所读取,最终注入到spring bean中,所以我们方法二是配置其bean类,热加载方便修改当然方式一更简单,
方式二:在注解涵盖package下面新建PageHeleperConfig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import com.github.pagehelper.PageHelper; import java.util.Properties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author zhuxiaomeng * @date 2018/1/2. * @email 154040976@qq.com */ @Configuration public class PageHelperConfig { @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; } } |
pageHelper 基础知识为:
1
2
|
import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; |
1
|
Page<T> tPage= PageHelper.startPage(page,limit); |
下一句的查询语句来进行分页。你只需要用List<T>接收
下面是通用Mapper和PageHelper在Spring Boot下的编程式配置示例,其中包名及其他配置参数请自行替换成符合你项目的配置。
@Configuration
public class MybatisConfigurer {
@Resource
private DataSource dataSource;
@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setTypeAliasesPackage("cn.potato.orm.model");
//分页插件
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("returnPageInfo", "check");
properties.setProperty("params", "count=countSql");
pageHelper.setProperties(properties);
//添加插件
bean.setPlugins(new Interceptor[]{pageHelper});
//添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
return bean.getObject();
}
@Configuration
@AutoConfigureAfter(MybatisConfigurer.class)
public static class MyBatisMapperScannerConfigurer {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
mapperScannerConfigurer.setBasePackage("cn.potato.orm.mapper");
//配置通用mappers
Properties properties = new Properties();
properties.setProperty("mappers", "cn.potato.orm.core.Mapper");
properties.setProperty("notEmpty", "false");
properties.setProperty("IDENTITY", "MYSQL");
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}
}
}
spring-boot PageHelper的更多相关文章
- Spring boot PageHelper.startPage(pageIndex, pageSize)分页无效
H5页面在测试列表的时候发现分页好像没有起到作用 看了一下后台也没有问题哈: 1.PageHelper.startPage(pageIndex, pageSize)要放在要分页的上面,也没错 2.查询 ...
- Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示
关于SpringBoot和PageHelper,前篇博客已经介绍过Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件,前篇博客大致讲述了S ...
- Spring Boot 2.x(十三):你不知道的PageHelper
PageHelper 说起PageHelper,使用过Mybatis的朋友可能不是很陌生,作为一款国人开发的分页插件,它基本上满足了我们的日常需求.但是,我想去官方文档看看这个东西配合Spring B ...
- Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件
上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybat ...
- spring boot 整合pagehelper分页插件
Spring Boot 整合pagehelper分页插件 测试环境: spring boot 版本 2.0.0.M7 mybatis starter 版本 1.3.1 jdk 1.8 ------ ...
- Spring Boot + MyBatis + Pagehelper 配置多数据源
前言: 本文为springboot结合mybatis配置多数据源,在项目当中很多情况是使用主从数据源来读写分离,还有就是操作多库,本文介绍如何一个项目同时使用2个数据源. 也希望大家带着思考去学习!博 ...
- Spring Boot系列教程八: Mybatis使用分页插件PageHelper
一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp ...
- 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法
spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...
- 62. mybatis 使用PageHelper不生效【从零开始学Spring Boot】
[从零开始学习Spirng Boot-常见异常汇总] 在Spirng Boot中集成了PageHelper,然后也在需要使用分页的地方加入了如下代码: PageHelper.startPage(1,1 ...
- Spring Boot+Mybatis+Pagehelper分页
Spring Boot 集成MyBatis和Pagehelper分页插件 mybatis-spring-boot-starter依赖树如下: pom配置 <project xmlns=" ...
随机推荐
- C# 关于out和ref的问题
http://bbs.csdn.net/topics/320214035 问题: C#里非基础类型传参数都是以引用类型的方式,那么换句话说,out和ref除了基础类型外,实际上没有任何意义?是不是这么 ...
- win8设置开机启动项
c:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
- android开发常用组件【持续更新中。。。】
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- 神奇的null和undefined
在JavaScript中,有两个特殊的类型存在,它们都只有一个值,分别null和undefined,之所以将它们放在一块,是因为在使用方面它们有很多相似之处. 相同点 在JavaScript中,nul ...
- Makefile | Linux嵌入式编程 使用详细图解
针对的是对Makefile一点都不会的小白哦! 练习之前我们要做好准备: (1):第一步创建一个目录,因为实验过程中生成的文件会很多,不要把你系统里的文件搞得乱七八糟. [cjj@bogon ~]$ ...
- python 可视化 二维坐标标注等等
基本画图操作: import matplotlib.pyplot as plt import numpy as np x = np.linspace(-3,3,50) y1 = 2*x+1 y2 = ...
- GC 提前晋升
如果Survivor 空间不足, 那么从 Eden 存活下来的和原来在 Survivor 空间中不够老的对象占满 Survivor 后, 就会提升到老年代, 可以看到这一轮 Minor GC 后老年代 ...
- Java内部类引用外部类中的局部变量为何必须是final问题解析
今天编写一个多线程程序,发现在方法内定义内部类时,如果内部类调用了方法中的变量,那么该变量必须申明为final类型,百思不得其解,后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方 ...
- 第3课 进化后的 const分析
1. C语言中的const (1)const修饰的变量是只读的,使得变量具有只读属性,但本质还是变量.所以不是真正的常量,它只是告诉编译器该变量不能出现在赋值符号的左边. (2)const修饰的局部 ...
- springTask任务调度
1什么是任务调度 在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作.常见的任务调度框架有Quartz和Sprin ...