jpa 多数据源配置 多个 mysql 数据库配置

springboot jpa 配置多数据源其实也并不难,只需要在 properties 或者 yml中简单配置并在项目中引入配置即可。

下面以 yml 为例:

(1)配置2个数据源 one 和 two

spring:datasource:one:url: jdbc:mysql://127.0.0.1:3306/db1?useSSL=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CTT&zeroDateTimeBehavior=convertToNullusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourcetwo:url: jdbc:mysql://127.0.0.1:3306/db2?useSSL=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CTT&zeroDateTimeBehavior=convertToNullusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourcejpa:database: mysqlhibernate:ddl-auto: update

(2)创建数据源配置

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
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 Guihong.Zhang* @since 2021-04-08 11:01**/
@Configuration
public class DataSourceConfig {@Bean@Primary@ConfigurationProperties(prefix = "spring.datasource.one")DataSource dsOne(){return DruidDataSourceBuilder.create().build();}@Bean@ConfigurationProperties(prefix = "spring.datasource.two")DataSource dsTwo(){return DruidDataSourceBuilder.create().build();}
}

(3)jpa分别配置2个数据源
@EnableJpaRepositories(basePackages = “repository 包名”)
builder.dataSource(dsOne).packages(“实体类包名”)
分别对应两个数据库,不同的包下的代码会连接不同的数据库,包括自动建表和CRUD。

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.context.annotation.Primary;
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 javax.annotation.Resource;
import javax.sql.DataSource;/*** @author Guihong.Zhang* @since 2021-04-08 11:04**/
@Configuration
@EnableJpaRepositories(basePackages = "com.test.repository.one",entityManagerFactoryRef = "localContainerEntityManagerFactoryBean1",transactionManagerRef = "platformTransactionManager1")
public class JpaConfigOne {@Resource@Qualifier("dsOne")DataSource dsOne;@ResourceJpaProperties jpaProperties;@Resourceprivate HibernateProperties properties;@Bean@PrimaryLocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean1(EntityManagerFactoryBuilder builder) {return builder.dataSource(dsOne).properties(jpaProperties.getProperties()).persistenceUnit("pu1").packages("com.test.entity.one").properties(properties.determineHibernateProperties(jpaProperties.getProperties(), newHibernateSettings())).build();}@BeanPlatformTransactionManager platformTransactionManager1(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(localContainerEntityManagerFactoryBean1(builder).getObject());}
}
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.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;import javax.annotation.Resource;
import javax.sql.DataSource;/*** @author Guihong.Zhang* @since 2021-04-08 11:09**/
@Configuration
@EnableJpaRepositories(basePackages = "com.test.repository.two",entityManagerFactoryRef = "localContainerEntityManagerFactoryBean2",transactionManagerRef = "platformTransactionManager2")
public class JpaConfigTwo {@Resource@Qualifier("dsTwo")DataSource dsTwo;@ResourceJpaProperties jpaProperties;@Resourceprivate HibernateProperties properties;@BeanLocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean2(EntityManagerFactoryBuilder builder) {return builder.dataSource(dsTwo).properties(jpaProperties.getProperties()).persistenceUnit("pu2").packages("com.test.entity.two").properties(properties.determineHibernateProperties(jpaProperties.getProperties(), newHibernateSettings())).build();}@BeanPlatformTransactionManager platformTransactionManager2(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(localContainerEntityManagerFactoryBean2(builder).getObject());}
}

springboot jpa 配置多数据源相关推荐

  1. SpringBoot JPA配置多数据源(同类型库)教程

    SpringBoot项目配置多数据源主要分为以下个步骤: 确定好所连接的数据库的资源(包括url username password) 将两个库的信息写入到配置文件中(application.yaml ...

  2. springboot jpa 配置多数据源报错解决 Consider defining a bean named ‘entityManagerFactory‘

    版本 springboot 2.6.x 现象 jpa配置多数据源后启动报错 Consider defining a bean named 'entityManagerFactory' 解决 方法1:将 ...

  3. springboot + JPA 配置双数据源

    一.首先配置application.yml文件设置主从数据库 spring:servlet:multipart:max-file-size: 20MBmax-request-size: 20MBpro ...

  4. springboot+jpa配置多数据源(Oracle+SqlServer)

    本贴主要讲解配置多数据源 springboot+jpa的整合需要自行准备好 1.maven中要导入Oracle和SqlServer的jar包 <dependency><groupId ...

  5. SpringBoot+ElasticSearch7.x+JPA配置多数据源

    SpringBoot+ElasticSearch7.x+JPA配置多数据源 这里分为测试环境配置和正式环境配置,大体相差无几 ESTestConfig 1 @Configuration2 @Confi ...

  6. springboot+jpa+mybatis 多数据源支持

    springboot+jpa+mybatis 多数据源支持 配置dataSource import org.springframework.beans.factory.annotation.Quali ...

  7. SpringBoot JPA 配置多个数据库

    SpringBoot JPA 配置多个数据库 一.application.yml : 二.创建一个SpringBoot配置类 三.primary数据源的JPA配置 四.secondary数据源的JPA ...

  8. SpringBoot+SpringDataJpa配置双数据源SqlServer和Mysql

    有时候项目中会遇到需要配置双数据源的情况,到SpringBoot2.0版本后和之前配置双数据源的方法有些区别,这里我用的SpringBoot版本是2.0.3,废话不多说,给出主要步骤: 一.项目依赖p ...

  9. springboot2+JPA 配置多数据源(不同类型数据库)

    注意:看此篇文章之前,springboot+jpa的配置环境应搭建好,不会搭可以自行百度.本文章主要讲述配置JPA多数据源. 1.数据源配置文件 application.properties # 数据 ...

最新文章

  1. 利用SurfaceView显示正弦曲线,仿造示波器
  2. SoapUI:mock service的简单使用
  3. PG通用(常用)功能
  4. C++实现最大堆最小堆
  5. 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元
  6. 编写下载服务器。 第五部分:油门下载速度
  7. Win10如何设置IE为默认浏览器
  8. 例子---JS无缝轮播图
  9. document.body 与 document.documentElement区别介绍
  10. 在SQL Server中创建用户角色及授权(使用SQL语句)
  11. 高性能MySQL读书笔记 (五)
  12. 清华大学操作系统OS学习(四)——物理内存管理:连续内存分配
  13. 小程序js车牌号手机号正则表达
  14. 广数25i系统倒刀回刀m代码_广数系统编程实例精选
  15. oracle中between函数用法,Oracle常用函数使用介绍
  16. jsp案例分析(二)-聊天室-2-逆向建模
  17. python 三次样条_python实现三次样条插值
  18. MySQL-多表操作
  19. Safe3 Web漏洞扫描系统 6.1修正版(蜘蛛爬行)
  20. 面向对象:找个温暖的人一起慢慢变老

热门文章

  1. 编程珠玑译-Column 1:开篇
  2. Unity 动态切换天空盒
  3. ping的配置文件 linux,SmokePing之配置文件config详解
  4. JSP开发中的分层模式
  5. 【JavaWeb】火车票管理系统 (三)用户登录-最终版
  6. 公积金的 就黄金分割就感觉好就
  7. 如何制作彩信手机报?
  8. 衢江区暖心家园暖心系列活动--健康知识讲座
  9. cadence SPB17.4 - 导入.dxf文件作为板框
  10. windows命名管道使用方法