springboot多数据源配置(通过jpa连接oracle及sqlserver数据库)

本文详细介绍了在SpringBoot项目中配置多数据源,连接Oracle和SQLServer数据库的过程,包括避开坑点、配置application.yml、数据库连接文件、数据源、事务管理器等,并强调了Oracle主键自增的特殊处理方式。
摘要由CSDN通过智能技术生成

@springboot配置多数据源(通过jpa连接oracle及sqlserver数据库)

1. 需要避开的几个坑

    通过maven引入依赖的时候会因为这两个数据库导致几个可能存在的坑,写在前面,方便避开。

1.1 sqlserver的坑

    由于各种原因,该部分的sqlserver数据库采用的是sqlserver2008r2的版本,在连接前需要加载驱动,而驱动所需的jar包在pom文件中应当如下填写:

<dependency>
	<groupId>com.microsoft.sqlserver</groupId>
	<artifactId>sqljdbc4</artifactId>
	<version>4.2</version>
</dependency>

    然而即便在pom文件中写了该依赖,项目依旧报错,究其原因是该jar是收费的,不能直接使用,所以可以先把jar包下到本地,安装到maven的本地仓库,再写该依赖就不会报错了,要下的包名为sqljdbc4.jar,下载完后再在该包所在文件位置执行命令:

mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0

1.2 oracle的坑

    orcale需要的依赖的坑和sqlserver差不多,都是jar包的问题,一方面要注意不同的oracle版本对应的jar包不一样,另一方面最好也是通过mvn命令安装到本地仓库(如果能直接下载的话就没事了)。我这个项目采用的是oracle12c的版本,对应使用了ojdbc6的12.1.0.2.0版本。

1.3 oracle插入数据时主键自增的问题

    在该项目中需要往oracle插入数据,在主码部分由于需要添加@Id注解,所以该字段插入前不能为空,必须要有值,一般的数据库通常采用@GeneratedValue注解,该注解中的strategy值可根据数据库的不同策略进行配置,但是!oracle不行,不要给往oracle里写的那个bean添加GeneratedValue注解,建议自增字段直接在oracle里写触发器,在这个bean的构造函数中直接给这个@Id注解所在的字段赋值,反正到时候插入进去的不会是这个值。

2 springboot配置多数据源

2.1 目录结构

目录结构

2.2 配置application.yml文件

    配置数据库文件,代码如下:

server:
  port: 9090 #端口号
spring:
  datasource:
    database1:
      url: jdbc:oracle:thin:@//${DB_HOST:localhost}:${DB_PORT:1521}/test1  #oracle数据源地址
      username: ${DB_USER:admin}  # 用户名
      password: ${DB_PASSWORD:123456} # 密码
      driver-class-name: oracle.jdbc.OracleDriver # Oracle驱动
    database2:
      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver # sqlserver的驱动
      url: jdbc:sqlserver://localhost:1433;DatabaseName=test2 #sqlserver数据源地址
      username: admin # 用户名
      password: 123456 # 密码
  #    type: com.alibaba.druid.pool.DruidDataSource
  jpa:
    database: mysql
    show-sql: true
    hibernate:
      ddl-auto: update
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    database-platform: org.hibernate.dialect.MySQL5Dialect

    配置了database1和database2两个数据库,分别是oracle和sqlserver的数据库。

2.3 配置数据库连接文件

    在DataBase1Properties类文件中(在config/properties下)配置database1的连接属性

@ConfigurationProperties(prefix = "spring.datasource.database1")
@Component
@Data
public class DataBase1Properties {
   
    private String url;

    private String username;

    private String password;

    private 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值