原 spring boot 整合mybat

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类加载。所以这个配置没实际意义。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏咸鱼不闲

web项目中视频的上传和展示

以上步骤视频就通过程序保存到电脑的指定位置了,一般我会新建一个视频类,先用uuid给视频重命名,视频类的路径是视频的名字,取的时候使用视频的名字去请求。

1052
来自专栏IT进修之路

原 spring boot Druid多

1952
来自专栏LanceToBigData

SpringBoot(二)Web整合开发

Spring Boot (二):Web 综合开发 本篇文章接着上篇内容继续为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功...

3307
来自专栏java闲聊

Netty入门(一)

在文章开始之前首先明确一个问题,为什么要使用Netty,Netty解决了什么问题,围绕着这个问题我们开始本篇文章的学习

1062
来自专栏指尖下的Android

Execution failed for task ':app:processDebugManifest'. at org.gradle.api.internal.tasks.executio...

新项目需要用到视频播放,果断在项目中依赖了饺子播放器,因为用的人还挺多的,Stargazers有7.7K了,然后开始了我的采坑之路,不是说这个框架很坑,而是An...

1406
来自专栏互联网杂技

SpringBoot ( 二 ) :web 综合开发

spring boot web开发非常的简单,其中包括常用的json输出、filters、property、log等。

953
来自专栏java一日一条

@qualifier和@primary小记

公司最近要将所有的项目微服务化,做成统一管理,小编负责当前项目的微服务改造工作,在接入spring-cloud的过程中不可避免的遇到一些有意思的事情,把他写下来...

952
来自专栏我的小碗汤

自动评论csdn博客文章实现

今天我们来用java代码爬取csdn博客网站,然后自动评论,这一波操作可以说是相当风骚了,话不多说,咱上代码。

742
来自专栏SpringBoot 核心技术

第二十七章:SpringBoot使用ApplicationEvent&Listener完成业务解耦

1524
来自专栏互扯程序

spring Boot 整合mybatis 如何使用多数据源

前言 本篇教程偏向实战,程序猿直接copy代码加入到自己的项目中做简单的修修改改便可使用,而对于springboot以及mybatis不在此进行展开介绍...

3209

扫码关注云+社区