SpringBoot 多数据源配置/连接两个数据库 (SpringBoot+Mysql+SqlServer)(亲测可用)

Boot项目原配Mysql数据库 。业务需要加上sqlserver数据库   网上看了两天  趟了不少坑。

其实网上帖子挺全的,我遇到的问题没有太多相关介绍。现在搞好后分享给大家,自己也做个记录。

 

1.首先 依赖配置                       

   按需配置重点是数据库jar包跟bootjar包。版本无需考虑


		
			com.alibaba
			druid
			1.1.14
		
		
			mysql
			mysql-connector-java
			runtime
		

		
		
			org.jfree
			jfreechart
			1.0.19
			
				
					xml-apis
					xml-apis
				
				
					bcprov-jdk14
					bouncycastle
				
			
		
		
		
		
			org.springframework.boot
			spring-boot-devtools
			true
		
		 
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
        
            junit
            junit
        

		
		
		    com.auth0
		    java-jwt
		    3.4.0
		
		       		
		
		
		    org.apache.commons
		    commons-pool2
		
    	
        	org.apache.commons
            commons-lang3
    	

		
        
            net.sf.json-lib
            json-lib
            2.4
            jdk15
        
        
        
		
            org.projectlombok
            lombok
        
        
            com.itextpdf
            itextpdf
            5.4.2
        
        
            com.itextpdf.tool
            xmlworker
            5.4.1
        
        
            com.itextpdf
            itext-asian
            5.2.0
        
        
            org.xhtmlrenderer
            flying-saucer-pdf
            9.0.3
        
        
            org.freemarker
            freemarker
        
		
        
        
        
            io.springfox
            springfox-swagger2
            2.9.2
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        
        
       	
		
    		commons-io
    		commons-io
    		2.2
		
       		
        
		
    		org.drools
    		drools-core
    		7.16.0.Final
		
		
    		org.drools
    		drools-compiler
    		7.16.0.Final
		
		
    		org.drools
    		drools-templates
    		7.16.0.Final
		
		
    		org.kie
    		kie-api
    		7.16.0.Final
		
		
    		org.kie
    		kie-spring
    		7.16.0.Final
		
		
		 
		
            javax.servlet
            javax.servlet-api
        
        
            javax.servlet
            jstl
        
        
            org.apache.tomcat.embed
            tomcat-embed-jasper
        
        
            org.apache.tomcat
            tomcat-jsp-api
        

		
        
        	org.springframework.boot
        	spring-boot-configuration-processor
        	true
        

上面是pom    (我懒了,不想摘出来。说实话我们单一项目boot   依赖我都没动,手动加了个sqlserver数据库jar包,其他的都没改)

2.yml配置

spring:
  datasource:
   test1:
    jdbc-url: jdbc:mysql://192.168.0.150:3306/gdsdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
    username: root
    password: ***
    driver-class-name: com.mysql.cj.jdbc.Driver
   test2:
    jdbc-url: jdbc:sqlserver://192.168.0.150:1433;DatabaseName=gdsdb
    username: sa
    password: ***
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

我这里使用的是yml    不管是yml和另外一直格式都可以。格式不一样而已

介绍:  spring:datasource 就不讲了

 1.  test1   test2 是自定义名称,可以更换

 2.数据库路径 名称必须是 jdbc-url    不是这个会报错

 3. 类型 boot2.0以后 driver-class-name

3.启动类

 

//@EnableScheduling
//@SpringBootApplication(exclude={DataSourceAutoConfiguration.class},scanBasePackages = {"com.XXX.XXX","com.XXX.XXX","com.XXX.XXX"})
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class Gds2KApplication extends SpringBootServletInitializer {
	public static void main(String[] args) {
		SpringApplication.run(Gds2KApplication.class, args);
	}
	@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Gds2KApplication.class);
    }
}

这里要说明一下@EnableScheduling 是定时器相关注解,但是下面有配置取消Boot自动配置    所以会有出入。因为我们目前项目中没用到定时器。所以暂时注掉了,我准备以后有需要再研究怎么开启。

@SpringBootApplication

  1. 有scanBasePackages 就注掉。  我这边原本同事加上了 。我测这个发现冲突。注释掉后测试好像没问题
  2. exclude={DataSourceAutoConfiguration.class} 要加上这句,作用是取消Boot自动配置。使用咱们自己配置的信息。
  3. @MapperScan(basePackages= 这个注解 删掉吧 。因为在那两个文件里面有加,这个位置就不用了。

4.自主配置 文件

SpringBoot 多数据源配置/连接两个数据库 (SpringBoot+Mysql+SqlServer)(亲测可用)_第1张图片

在controller同级加个dataconfig(名字可更换)

把这两个文件直接粘进去(我附带文件里面有demo  可直接下载)   因为我是两个数据库。所以两个文件。如果配置多个数据库 可以多配置文件。里面内容是一样的。下面是需要修改的内容

SpringBoot 多数据源配置/连接两个数据库 (SpringBoot+Mysql+SqlServer)(亲测可用)_第2张图片

讲解:

1.红框1的位置。是你数据库mapper包的路径

2.红框2的位置。是你yml文件配置的名称

3.里面有个依赖引错了。把上面import删了 再引个boot的就行。

SpringBoot 多数据源配置/连接两个数据库 (SpringBoot+Mysql+SqlServer)(亲测可用)_第3张图片

 

到这里就完成了,可以启动尝试

遇到问题 再缕一缕文章 看看是哪里漏了。实在找不到错误留言给我

 

demo下载地址

 

 

 

有两个都遇到的问题  

Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured

 

可以看我这篇文章      文章链接

你可能感兴趣的:(Boot,java,数据库,spring,boot,spring,mysql)