SpringBoot整合Mybatis Plus多数据源的实现方法是什么
发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,这篇文章主要讲解了"SpringBoot整合Mybatis Plus多数据源的实现方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Spring
千家信息网最后更新 2024年10月17日SpringBoot整合Mybatis Plus多数据源的实现方法是什么application.properties
2种方式创建DataSource
Master配置,使用druid连接池
Slave配置
这篇文章主要讲解了"SpringBoot整合Mybatis Plus多数据源的实现方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot整合Mybatis Plus多数据源的实现方法是什么"吧!
导读
有一个这样子的需求,线上正在跑的业务,由于业务发展需要,需重新开发一套新系统,等新系统开发完成后,需要无缝对接切换,当初具体设计见草图。
添加依赖
org.projectlombok lombok 1.18.16 provided mysql mysql-connector-java com.baomidou mybatis-plus-boot-starter 3.4.0 com.alibaba druid 1.1.10
application.properties
server.port=9999spring.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.master.url=jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8&useSSL=falsespring.datasource.master.username=rootspring.datasource.master.password=rootspring.datasource.slave.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.slave.jdbc-url=jdbc:mysql://127.0.0.1/test2?useUnicode=true&characterEncoding=utf-8&useSSL=falsespring.datasource.slave.username=rootspring.datasource.slave.password=root
2种方式创建DataSource
Master配置,使用druid连接池
import com.alibaba.druid.pool.DruidDataSource;import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.env.Environment;import javax.sql.DataSource;/** * @Author:chenyanbin */@Configuration@MapperScan(basePackages = "com.example.demo.mapper", sqlSessionFactoryRef = "masterSqlSessionFactory")public class MasterDataSourceConfig { @Autowired private Environment env; @Primary @Bean(name = "masterDataSource")// @ConfigurationProperties("spring.datasource.master") public DataSource masterDataSource() {// return DataSourceBuilder.create().build(); DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(env.getProperty("spring.datasource.master.url")); dataSource.setUsername(env.getProperty("spring.datasource.master.username")); dataSource.setPassword(env.getProperty("spring.datasource.master.password")); dataSource.setDriverClassName(env.getProperty("spring.datasource.master.driver-class-name")); //配置初始化大小、最小、最大 dataSource.setMinIdle(10); //配置初始化大小、最小、最大 dataSource.setMaxActive(200); //配置初始化大小、最小、最大 dataSource.setInitialSize(10); //配置获取连接等待超时的时间 dataSource.setMaxWait(60000); //配置一个连接在池中最小生存的时间,单位是毫秒 dataSource.setMinEvictableIdleTimeMillis(300000); //配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 dataSource.setTimeBetweenEvictionRunsMillis(60000); //默认的testWhileIdle=true,testOnBorrow=false,testOnReturn=false dataSource.setValidationQuery("SELECT 1"); //申请连接时执行validationQuery检测连接是否有效 dataSource.setTestOnBorrow(false); //建议配置为true,不影响性能,并且保证安全性。 dataSource.setTestWhileIdle(true); //是否缓存preparedStatement,也就是PSCache dataSource.setPoolPreparedStatements(false); return dataSource; } @Bean(name = "masterSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception { MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); return sessionFactoryBean.getObject(); }}
Slave配置
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.jdbc.DataSourceBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/** * @Author:chenyanbin */@Configuration@MapperScan(basePackages = "com.example.demo.mapper2",sqlSessionFactoryRef = "slaveSqlSessionFactory")public class SlaveDataSourceConfig { @Bean(name = "slaveDataSource") @ConfigurationProperties("spring.datasource.slave") public DataSource slaveDataSource(){ return DataSourceBuilder.create().build(); } @Bean(name = "slaveSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource) throws Exception { MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); return sessionFactoryBean.getObject(); }}
注意
master和slave扫描不同的mapper包路径!!!!!!
如果需要指定.xml文件,需这样配置!!!
@Bean(name = "masterSqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception { MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapper/**/*.xml")); return sessionFactoryBean.getObject(); }
MybatisPlus分页插件设置
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/** * MybatisPlus分页配置 * * @Author:chenyanbin */@Configurationpublic class MybatisPlusPageConfig { /** * 新版分页插件 * * @return */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return mybatisPlusInterceptor; }}
@Bean(name = "masterSqlSessionFactory") public SqlSessionFactory sqlSessionFactory( @Qualifier("masterDataSource") DataSource dataSource, @Qualifier("mybatisPlusInterceptor") MybatisPlusInterceptor mybatisPlusInterceptor ) throws Exception { MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver() .getResources("classpath:mapper/**/*.xml")); sessionFactoryBean.setPlugins(mybatisPlusInterceptor); return sessionFactoryBean.getObject(); }
启动类
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MybatisPlusAutoConfiguration.class})
启动类上排查,自动装配,使用我们自定义的多数据源!!!
演示
多个数据源,同时也是支持事务的
感谢各位的阅读,以上就是"SpringBoot整合Mybatis Plus多数据源的实现方法是什么"的内容了,经过本文的学习后,相信大家对SpringBoot整合Mybatis Plus多数据源的实现方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
配置
数据
数据源
方法
整合
最小
最大
大小
学习
检测
业务
内容
单位
插件
时间
系统
开发
不同
有效
上排
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
海外元器件数据库
数据库二级和三级
战地五服务器在中国吗
网络安全现状2017
手机app软件开发编程实例
网络安全培训调研表
电脑数据库的地址在哪里获取
数据库的默认拓展名
互联网科技公司北京
安徽网络安全审计硬件设备价格
数据库的安全管理实验总结
魔兽世界npc的装备数据库
不能访问ftp服务器
数据库的安全特性包括哪些
网络科技互联网公司纳税
服务器系统安全与维护 论文
萍乡节能软件开发业务
docker搭建wegame饥荒服务器
网络安全事故总结
校园网为什么突然无法连接服务器
关于网络安全保密性
如何删除原有谷歌服务器
优刻得云服务器上传文件
python开发数据库中间件
铁路网络安全审计
c 连续插入数据到数据库中
卫士通网络安全软件
丝瓜搜不到服务器
管理软件开发平台靠谱吗
电脑如何连接学校的服务器