添加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的更多相关文章

  1. springboot +mybatis分页插件PageHelper

    1.问题描述 JAVA界ORM的两位大佬Hibernate和Mybatis,hb自带分页(上手挺快,以前用了好几年hb,后期运维及优化快疯了),mybatis没有分页功能,需要借助第三方插件来完成,比 ...

  2. Mybatis分页插件PageHelper的配置和使用方法

     Mybatis分页插件PageHelper的配置和使用方法 前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页. 前端分 ...

  3. Mybatis分页插件PageHelper使用

    一. Mybatis分页插件PageHelper使用  1.不使用插件如何分页: 使用mybatis实现: 1)接口: List<Student> selectStudent(Map< ...

  4. Java SSM框架之MyBatis3(三)Mybatis分页插件PageHelper

    引言 对于使用Mybatis时,最头痛的就是写分页,需要先写一个查询count的select语句,然后再写一个真正分页查询的语句,当查询条件多了之后,会发现真不想花双倍的时间写count和select ...

  5. Mybatis学习---Mybatis分页插件 - PageHelper

    1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...

  6. Mybatis分页插件PageHelper的实现

    Mybatis分页插件PageHelper的实现 前言 分页这个概念在做web网站的时候很多都会碰到 说它简单吧 其实也简单 小型的网站,完全可以自己写一个,首先查出数据库总条数,然后按照分页大小分为 ...

  7. 基于Mybatis分页插件PageHelper

    基于Mybatis分页插件PageHelper 1.分页插件使用 1.POM依赖 PageHelper的依赖如下.需要新的版本可以去maven上自行选择 <!-- PageHelper 插件分页 ...

  8. Mybatis分页插件-PageHelper的使用

    转载:http://blog.csdn.net/u012728960/article/details/50791343 Mybatis分页插件-PageHelper的使用 怎样配置mybatis这里就 ...

  9. (转)淘淘商城系列——MyBatis分页插件(PageHelper)的使用以及商品列表展示

    http://blog.csdn.net/yerenyuan_pku/article/details/72774381 上文我们实现了展示后台页面的功能,而本文我们实现的主要功能是展示商品列表,大家要 ...

随机推荐

  1. linux文本文件编辑命令

    1.cat命令 cat命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”. Linux系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个cat命令就是用于查看 ...

  2. myeclipse项目导入IDEA

    1.import project from external model     (不需要删除myeclipse多余文件) https://blog.csdn.net/d276031034/artic ...

  3. springboot 接收post和get请求

    接收post请求: @RequestMapping(value = "/api/v1/create_info", method = RequestMethod.POST) publ ...

  4. [转载]Oracle中的NVL函数

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  5. How to use CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation

    How to use Heavy Duty Diagnostic CAR FANS C800 Diagnostic Scan Tool to do diagnosis operation Here i ...

  6. django模型中的关系对应

    显然,关系数据库的力量在于将表相互关联.Django提供了定义三种最常见的数据库关系类型的方法:多对一,多对多和一对一. 在说明之前,首先来理解一下这三个概念: 多对一: 两个集合a,b;集合a中的多 ...

  7. 管理mycat命令详解

    mycat监听两个端口,分别为8066和9066:mycat服务默认的数据端口是8066,而9066端口则是mycat管理端口,用于管理mycat的整个集群状态.监听的端口可以在server.xml配 ...

  8. Linux学习笔记之CentOS7配置***SS

    0x00 概述 最近安装K8S,镜像在国内不可达,只能通过科学方法获取. 0x01 安装配置Shadowsocks客户端 1.1 安装Sha.dows.ocks客户端 安装epel扩展源 采用Pyth ...

  9. Linux 安装 RabbitMQ 3.7.8 安装部署

    Linux 安装 rabbitmq 3.7.8 安装部署 安装 ncurses 1.安装GCC GCC-C++ Openssl等模块 yum -y install make gcc gcc-c++ k ...

  10. go开发工具及安装使用(Liteide)Liteide-centos6.8 安装

    开发工具介绍 LiteIDE https://github.com/visualfc/liteide/blob/master/liteidex/deploy/welcome/zh_CN/readme. ...