SpringBoot整合Mybatis Plus多数据源的实现方法是什么
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"SpringBoot整合Mybatis Plus多数据源的实现方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Spring
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
互联网科技网
中关村互联网 科技集团
致聘互联网科技
互联网高科技企业
互联网科技创新企业排名
科技与互联网的利与弊
青岛中康互联网医疗科技有限公司
互联网科技实习生岗位职责
互联网科技寓意
央行互联网金融科技公司
互联网为啥属于高科技
湖北码尼互联网科技有限公司电话
中和天地互联网科技有限公司
山东星卡互联网科技有限公司官网
电子商务与互联网科技的关系
九思连强互联网电子科技有限公司
互联网科技接地气
普陀区互联网教育科技管理办法
求路客互联网科技电话
亚光科技低轨卫星互联网
互联网金融科技
新华互联网科技
互联网和科技创新
科技企业和互联网企业
科技类互联网
互联网科技小贷
互联网前沿科技
互联网之后的科技是什么
宇信科技在杭州互联网排第几
互联网科技企业文化