SpringBoot Mybatis 分页插件PageHelper
添加maven配置:
<!-- 分布插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.</version>
</dependency>
添加Bean:
//配置mybatis的分页插件pageHelper
@Bean
public PageHelper pageHelper(){
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
//设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用
properties.setProperty("offsetAsPageNum","true");
//设置为true时,使用RowBounds分页会进行count查询
properties.setProperty("rowBoundsWithCount","true");
//设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果
//properties.setProperty("pageSizeZero","true");
//禁用合理化,启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
properties.setProperty("reasonable","false");
//配置mysql数据库的方言
properties.setProperty("dialect","mysql"); //配置mysql数据库的方言
pageHelper.setProperties(properties);
return pageHelper;
}
SqlSessionFactory:
@Bean
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource,PageHelper pageHelper) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
Resource[] mappers = (new PathMatchingResourcePatternResolver())
.getResources("classpath*:mybatis_mapper/*Mapper.xml");
sessionFactory.setMapperLocations(mappers);
sessionFactory.setPlugins(new Interceptor[]{pageHelper});
return sessionFactory.getObject();
}
应用:
public PageInfo<DataDict> selectListByParentKey(String parentKey){
PageHelper.startPage(,);
List<DataDict> list=mapper.selectListByParentKey(parentKey);
PageInfo<DataDict> pageInfo = new PageInfo<>(list);
return pageInfo;
}
封装返回的PageInfo
public class PageResult {
private ModelMapper modelMapper=SpringUtils.getBean(ModelMapper.class);
private PageInfo pageInfo;
private Class aClass;
public PageResult(PageInfo _pageInfo ){
this.pageInfo=_pageInfo;
}
/**
*
* @param _pageInfo pageHelper的实例
* @param _aClass list输出类型,如果aClass不为空,就将list转换为aClass类型,反之则不进行转换
*/
public PageResult(PageInfo _pageInfo,Class _aClass){
this.pageInfo=_pageInfo;
this.aClass=_aClass;
}
private Integer pageIndex;
private Integer pageSize;
private Long totalCount;
private Integer totalPages;
private List list;
public Integer getPageIndex() {
return pageInfo.getPageNum();
}
public Integer getPageSize() {
return pageInfo.getPageSize();
}
public Long getTotalCount() {
return pageInfo.getTotal();
}
public Integer getTotalPages(){
return pageInfo.getPages();
}
public List getList() {
List list= pageInfo.getList();
if(null!=aClass) {
List list2 = new ArrayList();
list.forEach(x -> {
list2.add(modelMapper.map(x, aClass));
});
return list2;
}else{
return list;
}
}
}
调用:
PageHelper.startPage(request.getPageIndex(),request.getPageSize());
List<DataDict> list=dataDictBizFacade.selectListByCondition(request.getDictKey(),request.getDictDesc(),request.getParentKey());
PageResult result=new PageResult(new PageInfo<>(list),DataDictResponse.class);
response.setData(result);
===============================================
4.1.6版本
会出现没调用pagehelper的sql里面也进行 分页
升级5.1.10版本
pom.xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.</version>
</dependency>
配置类修改为:
@Configuration
@ConfigurationProperties("jdbc.datasource")
@MapperScan(basePackages = "com.shitou.huishi.domain.dataaccess", annotationClass = MyBatisMapper.class)
public class DataSourceConfig {
// 动态配置从esb config读取
private String url = "jdbc:mysql://120.26.130.187:3306/huishi-server?useUnicode=true&characterEncoding=utf-8&useSSL=false";
private String username = "root";
private String password = "jsy2016memeda";
private String driverClassName = "com.mysql.jdbc.Driver"; public void setUrl(String url) {
this.url = url;
} public void setUsername(String username) {
this.username = username;
} public void setPassword(String password) {
this.password = password;
} public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
} //配置mybatis的分页插件pageHelper
@Bean
public PageHelper pageHelper(){
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
//设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用
properties.setProperty("offsetAsPageNum","true");
//设置为true时,使用RowBounds分页会进行count查询
properties.setProperty("rowBoundsWithCount","true");
//设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果
//properties.setProperty("pageSizeZero","true");
//禁用合理化,启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
properties.setProperty("reasonable","false");
//配置mysql数据库的方言
// properties.setProperty("dialect","mysql"); //配置mysql数据库的方言
pageHelper.setProperties(properties);
return pageHelper;
} @Bean
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource, PageHelper pageHelper) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
Resource[] mappers = (new PathMatchingResourcePatternResolver())
.getResources("classpath*:mybatis_mapper/*Mapper.xml");
sessionFactory.setMapperLocations(mappers);
sessionFactory.setPlugins(new Interceptor[]{new PageInterceptor()});
// sessionFactory
// .setPlugins(new Interceptor[] { new MysqlPageReqParamInterceptor(), new MysqlPageResultInterceptor() });
return sessionFactory.getObject();
} @Bean
public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("dataSource") DataSource dataSource)
throws Exception {
final DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource);
return dataSourceTransactionManager;
} /*@Bean
public TransactionTemplate transactionTemplate(
@Qualifier("dataSourceTransactionManager") DataSourceTransactionManager dataSourceTransactionManager)
throws Exception {
final TransactionTemplate jdbcTemplate = new TransactionTemplate();
jdbcTemplate.setTransactionManager(dataSourceTransactionManager);
return jdbcTemplate;
}*/
}
注意其中的拦截类换成了PageInterceptor
2.取消了配置识别mysql数据库的属性dialect,版本5以后可以自动识别
https://www.ciphermagic.cn/mybatis-page-2.html#Spring%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6
https://www.cnblogs.com/1315925303zxz/p/7364552.html
http://www.imooc.com/article/15451
https://blog.csdn.net/liangwenmail/article/details/77864267
https://github.com/pagehelper/Mybatis-PageHelper/issues/166
SpringBoot Mybatis 分页插件PageHelper的更多相关文章
- springboot +mybatis分页插件PageHelper
1.问题描述 JAVA界ORM的两位大佬Hibernate和Mybatis,hb自带分页(上手挺快,以前用了好几年hb,后期运维及优化快疯了),mybatis没有分页功能,需要借助第三方插件来完成,比 ...
- Mybatis分页插件PageHelper的配置和使用方法
Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...
- Mybatis分页插件PageHelper使用
一. Mybatis分页插件PageHelper使用 1.不使用插件如何分页: 使用mybatis实现: 1)接口: List<Student> selectStudent(Map< ...
- Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper
引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...
- Mybatis学习---Mybatis分页插件 - PageHelper
1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...
- Mybatis分页插件PageHelper的实现
Mybatis分页插件PageHelper的实现 前言 分页这个概念在做web网站的时候很多都会碰到 说它简单吧 其实也简单 小型的网站,完全可以自己写一个,首先查出数据库总条数,然后按照分页大小分为 ...
- 基于Mybatis分页插件PageHelper
基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...
- Mybatis分页插件-PageHelper的使用
转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...
- (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示
http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...
随机推荐
- 关于Python veriable scope 的一点疑问
在写程序中遇到了类似于以下代码的问题: #不会报错 a=1 def f(): print(a) f() #会报错 a=1 def f(): a+=1 f()
- Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)
http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html Deep Neural Networks, especially Conv ...
- hdu4784
题意: 给了一个图 从1号节点走到N号节点,然后,每个地方有买卖盐的差价,然后求 到达N的最大价值,一旦走到N这个点就不能再走了,或者走到不能再别的世界走1和N这两个点,然后接下来 用一个 四维的数组 ...
- python 测试文件或者文件目录是否存在 测试文件类型,获取文件大小,获取修改日期
----测试一个文件或目录是否存在 >>> import os >>> os.path.exists('/etc/passwd') True >>> ...
- 模拟windows全盘搜索
循环遍历pc上的文件夹,保存到mysql数据库中,搜索时,从数据库取数据.import osimport datetimeimport pymysqlimport threading def link ...
- AtCoder Beginner Contest 087 (ABC)
A - Buying Sweets 题目链接:https://abc087.contest.atcoder.jp/tasks/abc087_a Time limit : 2sec / Memory l ...
- JustOj 1936: 小明A+B
题目描述 小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算. 对于大于等于100的整数, 小明仅保留该数的最后两位进行计算, 如果计算结果大于等于 ...
- bzoj2049 [Sdoi2008]Cave 洞穴勘测 link cut tree入门
link cut tree入门题 首先说明本人只会写自底向上的数组版(都说了不写指针.不写自顶向下QAQ……) 突然发现link cut tree不难写... 说一下各个函数作用: bool isro ...
- [转载]tnsnames.ora监听配置文件详解
监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 置 Oracle 网络服务器环境 配置 Oracle 网络 ...
- Compare AURO OtoSys IM100 with OtoSys IM600
The main difference lies in Mercedes-Benz, VW, Audi software and adapters to work with. Software dif ...