千家信息网

SpringBoot+Jpa项目配置双数据源怎么实现

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"SpringBoot+Jpa项目配置双数据源怎么实现",在日常操作中,相信很多人在SpringBoot+Jpa项目配置双数据源怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2026年11月01日SpringBoot+Jpa项目配置双数据源怎么实现

这篇文章主要介绍"SpringBoot+Jpa项目配置双数据源怎么实现",在日常操作中,相信很多人在SpringBoot+Jpa项目配置双数据源怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"SpringBoot+Jpa项目配置双数据源怎么实现"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

配置yml文件

server:  port: 8080spring:  profiles:    active: dev  jackson:    time-zone: GMT+8      # 这里是我们的数据库配置地方    datasource:    data1:  #这里是数据库一      driverClassName: com.mysql.cj.jdbc.Driver      url: jdbc:mysql://192.168.0.77:3306/test1?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&rewriteBatchedStatements=true      username: root      password: 123      type: com.alibaba.druid.pool.DruidDataSource    data2:  #这里是数据库二      driverClassName: com.mysql.cj.jdbc.Driver      url: jdbc:mysql://192.168.0.88:3306/test2?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&rewriteBatchedStatements=true      username: root      password: 123      type: com.alibaba.druid.pool.DruidDataSource

当然到这里肯定是没有结束的,需要配置一些参数,否则启动会报错

创建数据源配置类

我们创建一个数据源的类,我们就给他取名为DataSourceConfig(这个名字自定义),在项目下创建一个包,方便管理

package com.eman.cdn.common.dataSource;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.ImportAutoConfiguration;import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import javax.sql.DataSource;/** * @author https://blog.csdn.net/weixin_42782429?spm=1000.2115.3001.5343 * @date 2021/12/21 11:35 * 

* description 数据源配置 */@Configurationpublic class DataSourceConfig { # 这里是我们在yml文件配置的位置 private final static String DB_TEST1 = "spring.datasource.test1"; private final static String DB_TEST2= "spring.datasource.test1"; # 这个Bean名字子自定义只要不是重复的Bean名字就行了 @Bean(name = "test1Properties") @Qualifier("test1Properties") @Primary @ConfigurationProperties(DB_TEST1) public DataSourceProperties test1Properties() { return new DataSourceProperties(); } @Bean(name = "test1DataSource") @Qualifier("test1DataSource") @Primary @ConfigurationProperties(prefix = DB_TEST1) public DataSource test1DataSource() { return test1Properties().initializeDataSourceBuilder().build(); } @Bean(name = "test2Properties") @Qualifier("test2Properties") @ConfigurationProperties(DB_TEST2) public DataSourceProperties test2Properties() { return new DataSourceProperties(); } @Bean(name = "test2DataSource") @Qualifier("test2DataSource") @ConfigurationProperties(prefix = DB_ANALYSIS) public DataSource test2DataSource() { return test2Properties().initializeDataSourceBuilder().build(); }}

为每个数据库创建配置类

由于需要用到Mybaitis-plus所以你得先导入Mybaitis-Plus的依赖

                    com.baomidou            mybatis-plus-boot-starter            3.1.0        
package com.eman.xx.xxx.xx;import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionTemplate;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.data.jpa.repository.config.EnableJpaRepositories;import org.springframework.orm.jpa.JpaTransactionManager;import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;import java.util.Objects;/** * @author tongJie * @date 2021/12/21 11:59 * 

* description 日志处理端数据库配置 */@Configuration@EnableTransactionManagement@EnableJpaRepositories( // 配置连接工厂 entityManagerFactoryRef = "tes1Factory", // 配置事物管理器 transactionManagerRef = "tes1Transaction", // 设置Jpa 的 repository所在位置 basePackages = {"com.xx.xx.xx.**.repository"})// 设置扫描的mapper@MapperScan(basePackages ="xx.xx.xx.test1.**.mapper", sqlSessionTemplateRef = "tes1SqlSessionTemplate")public class AnalysisDataBaseConfig { @Autowired @Qualifier("tes1DataSource") private DataSource analysisDataSource; @Autowired private JpaProperties jpaProperties; @Autowired private HibernateProperties properties; // 以下是jpa的配置 /** * 连接工厂 * @param builder 创建工具 * @return 结果 */ @Bean(name = "tes1Factory") public LocalContainerEntityManagerFactoryBean tes1Factory(EntityManagerFactoryBuilder builder) { return builder // 设置数据源 .dataSource(analysisDataSource) //设置实体类所在位置.扫描所有带有 @Entity 注解的类 .packages("xx.xx.xx.tes1.**.entity") // Spring会将EntityManagerFactory注入到Repository之中.有了 EntityManagerFactory之后, // Repository就能用它来创建 EntityManager 了,然后 EntityManager 就可以针对数据库执行操作 .persistenceUnit("tes1") // 为了加载yml中jpa下hibernate的相关配置 .properties(properties.determineHibernateProperties(jpaProperties.getProperties(), new HibernateSettings())) .build(); } /** * 配置事物管理器 * * @param builder 创建工具 * @return 结果 */ @Bean(name = "tes1Transaction") PlatformTransactionManager tes1Transaction(EntityManagerFactoryBuilder builder) { return new JpaTransactionManager(Objects.requireNonNull(analysisFactory(builder).getObject())); } // 以下是mybatis的配置 /** * 配置sqlSessionFactory * @return 结果 * @throws Exception 异常 */ @Bean("tes1SqlSessionFactory") public SqlSessionFactory tes1SqlSessionFactory() throws Exception { MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean(); sqlSessionFactory.setDataSource(analysisDataSource); sqlSessionFactory.setMapperLocations(new //这里填写你mybaits的xml文件存放的路径 PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/*.xml")); return sqlSessionFactory.getObject(); } /** * 配置sqlSessionTemplate * @return 结果 */ @Bean(name = "tes1SqlSessionTemplate") public SqlSessionTemplate tes1SqlSessionTemplate() throws Exception { return new SqlSessionTemplate(tes1SqlSessionFactory()); }}

以此类推之后每增加一个数据库源就循环上面的方法
注意!!!!包一定要放对你配置的位置,否则不识别就会报错!!!!!!

到此,关于"SpringBoot+Jpa项目配置双数据源怎么实现"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

配置 数据 数据源 数据库 项目 位置 结果 学习 名字 文件 管理 事物 工具 工厂 所在 方法 更多 会报 帮助 实用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 上海挚品互联网科技有限公司 互联网科技公司华为 互联网最新的科技有限公司 深圳互联网络科技有限公司 北京禾田雨橡互联网科技 广州善班互联网科技 科技大学互联网专业好不好 广西拼得多互联网科技有限公司 互联网科技实习生岗位职责 互联网科技寓意 浙江互联网科技研学营 互联网与医疗科技 中国科技创新与世界互联网大会 互联网科技圈年度人物 智帮互联网科技公司最近动向 卡尔迅互联网科技有限公司 山东大美朱楼互联网科技有限公司 现代互联网科技公司 互联网科技企业文化 博彦科技互联网金融 广州大一互联网络科技有限公司 云信互联网科技有限公司 科技赋能视角下互联网保险发展 深圳无忧互联网科技 张召忠谈中国互联网科技 陕西九四连强互联网科技有限公司 北京互联网科技类企业分布 易租星互联网科技有限公司 恒生互联网科技趋势
0