文档章节

spring boot 整合mybatis分页插件pagehelper5.1

边鹏_尛爺鑫
 边鹏_尛爺鑫
发布于 2018/01/10 14:20
字数 778
阅读 210
收藏 2

srping boot 与mybatis的整合就不在贴代码了,请看我以前的整和文章:
https://my.oschina.net/bianxin/blog/1602958

我的Spring Boot 版本:1.5.9

我的mybatis分页插件pagehelper版本:5.1.2

我在开始整合的时候,还是用的5.0以前的整合方式:

@Bean(name = "sqlSessionFactory")
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource) {
		SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
		try {
			sqlSessionFactoryBean.setDataSource(dataSource);
	        // 设置别名包(实体类)
	        sqlSessionFactoryBean.setTypeAliasesPackage("com.xin.dream.pojo");
			// 设置mybatis的主配置文件
	        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
	        //设置sql配置文件路径
	        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:com/xin/dream/mapper/*.xml"));
	        //分页插件
	        PageHelper page = new PageHelper();  //采坑:我用的分页插件是最新的,5.0以后就不再是PageHelper了
	        Properties properties = new Properties();  
	        properties.setProperty("dialect", "mysql");  
	        properties.setProperty("reasonable", "false");  
	        properties.setProperty("pageSizeZero", "true");  
	        page.setProperties(properties);  
	        sqlSessionFactoryBean.setPlugins(new Interceptor[]{page});
	        
			return sqlSessionFactoryBean.getObject();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

我是5.1的,结果采坑 : sqlSessionFactoryBean.setPlugins(new Interceptor[]{page});
报错:Type mismatch: cannot convert from PageHelper to Interceptor

这里我发现转换失败,没办法,只能在github上找最新的PageHelper的文档了。 
突然发现这儿坑还挺多的。下面我就把PageHelper 5.0与以前版本不一样的地方给贴出来。

  1. 使用 QueryInterceptor 规范 处理分页逻辑 新的分页插件拦截器为 
    com.github.pagehelper.PageInterceptor 新的 PageHelper 是一个特殊的 Dialect
  2. 实现类,以更友好的方式实现了以前的功能 新的分页插件仅有 dialect 一个参数,默认的 dialect 实现类为 PageHelper
  3. PageHelper 仍然支持以前提供的参数,在最新的使用文档中已经全部更新 PageHelper 的 helperDialect 参数和以前的 dialect 功能一样,具体可以看文档的参数说明
  4. 增加了基于纯 RowBounds 和 PageRowBounds 的分页实现,在com.github.pagehelper.dialect.rowbounds 包中,这是用于作为 dialect 参数示例的实现,后面会补充更详细的文档 去掉了不适合出现在分页插件中的 orderby功能,以后会提供单独的排序插件
  5. 去掉了PageHelper 中不常用的方法新的文档,更新历来更新日志中提到的重要内容,提供英文版本文档 解决 bug 将 Db2RowDialect 改为Db2RowBoundsDialect 所有分页插件抛出的异常改为 PageException

根据他提供的dome新的整合方式应该是:

//分页插件
PageInterceptor page = new PageInterceptor();  
Properties properties = new Properties();  
properties.setProperty("helperDialect", "mysql");  
properties.setProperty("reasonable", "true");  
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("params", "count=countSql");  
page.setProperties(properties);  
sqlSessionFactoryBean.setPlugins(new Interceptor[]{page});

使用方式(mysql为例):
sql语句:SELECT * FROM TABLE_name
service中使用:

public PageInfo<DoctorInfoDTO> buildCardDoctors(AppPage page) {
	// TODO Auto-generated method stub
	PageHelper.startPage(page.getCurrentPage(),page.getPageSize());
	List<DoctorInfoDTO> list = dao.buildCardDoctors();
	PageInfo<DoctorInfoDTO> pageInfo = new PageInfo<DoctorInfoDTO>(list);
	return pageInfo;
}

大致就这样了...
------------------------------------------------------------------------------------------------------------

另外上一篇文章:https://​​​​​​​my.oschina.net/bianxin/blog/1602958 中:

import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @instructions 添加mybatis的mapper接口扫描
 * 
 * @PS @AutoConfigureAfter(MyBatisConfig.class):
 * 		很多文章,和培训老师讲课,都说必须的加这个注释
 * 		结果我也就入坑了,其实这个注释是没的作用的,
 */
@Configuration
/*@AutoConfigureAfter(MyBatisConfig.class)  */
public class MyBatisMapperScannerConfig {
	
	@Bean
	public MapperScannerConfigurer mapperScannerConfigurer() {
		MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
		mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
		mapperScannerConfigurer.setBasePackage("com.xin.dream.dao");
		return mapperScannerConfigurer;
	}
}

@AutoConfigureAfter(MyBatisConfig.class)这个配置是无效的,很多教程都强调了配置这个,实际上MapperScannerConfigurer还是先SqlSessionFactory类加载。所以这个配置没实际意义。

© 著作权归作者所有

共有 人打赏支持
边鹏_尛爺鑫
粉丝 29
博文 30
码字总数 24888
作品 0
成都
程序员
私信 提问
加载中

评论(2)

边鹏_尛爺鑫
边鹏_尛爺鑫
你总条数,除以页大小呗,这个很简单吧
idoz
idoz
一次分页是不是要执行两次select , 它是如何计算总共多少页的?
Mybatis-PageHelper的使用

Mybatis-PageHelper一个简洁易用的mybatis分页插件。 文档地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md 加入依赖 使用的时候分两步。 第一步:在mybat...

_流云_
2017/04/18
0
0
Mybatis 分页插件 PageHelper Starter 1.1.0 发布

Mybatis 分页插件 PageHelper Starter v1.1.0 更新内容: 解决可能会注册两次分页插件的问题(由于属性注解导致的两次加载)。 增加 PageHelperProperties 注入,常用属性可以通过 IDE 自动提...

Liuzh_533
2017/02/05
1K
4
Spring Boot 整合 MyBatis/通用Mapper/PageHelper分页插件

整合MyBatis 整合通用Mapper 0. 基础知识 通用Mapper一般配置MyBatis, MBG插件使用 个人实践证明,通用Mapper配合其特定的MBG插件不如直接使用官方MBG插件方便 1. POM依赖配置 2. 通用Mappe...

OSC_fly
2018/07/17
0
0
微服务 SpringBoot 2.0(九):整合Mybatis

我是SQL小白,我选Mybatis —— Java面试必修 引言 在第五章我们已经整合了Thymeleaf页面框架,第七章也整合了JdbcTemplate,那今天我们再结合数据库整合Mybatis框架 在接下来的文章中,我会...

阿郎_
2018/09/30
0
0
Mybatis 分页插件 PageHelper 5.0.0 发布

Mybatis分页插件 - PageHelper PageHelper 5.0.0 发布了。如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页,部分特殊情况请...

Liuzh_533
2017/01/03
20.9K
39

没有更多内容

加载失败,请刷新页面

加载更多

《大话数据结构》读后总结(四)

一、算法 1、算法效率的度量方法 1.1 事后统计方法 通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。该方法具有很大缺陷,不...

徐曙辉
48分钟前
3
0
Android 整体设计及背后意义

阿里妹导读:现实工作中经常可以听到这样的说法:框架的升级带来协议性能的提升、编程模式的变革带来业务的飞跃...... 姑且不论这些表述是否有问题,实际上如果系统地看待事物整体,可能会有...

阿里云云栖社区
49分钟前
2
0
一文纵览EMAS 到底内含多少阿里核心技术能力

EMAS的整体定位是阿里巴巴移动技术对外输出的主窗口,沉淀了阿里巴巴近10年在移动互联网技术架构上的积累以及在一系列垂直场景中所实践的核心技术能力。一方面,EMAS希望为广大开发者提供安全...

阿里云官方博客
今天
2
0
Prometheus2.8简介

Prometheus是什么? Prometheus(普罗米修斯)是一套最初在SoundCloud上构建的开源监视和告警系统 。 特征 普罗米修斯的主要特点是: 具有由度量名称和键/值对标识的时间序列数据的多维数据模...

阿dai学长
今天
2
0
Android 动画Animation

动画分为视图动画(view animation)和属性动画(property animation),视图动画又分为帧动画和补间动画 视图动画控件(iv)点击事件(OnClickListener接口)触发位置在原位置 1.帧动画(Fra...

Coding缘
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部