SpringBoot2.0+與Mybatis-puls整合多數據源(dynamic-datasource-spring-boot-starter)

寫在前面

在我們的項目中不可避免有時候和第三方對接中需要接入多數據源,一般來講我們大多數是採用AOP方式去動態的調整數據源,也有通過Druid去配置主從數據源的,本篇文章主要介紹多個數據源分開使用的情況,我們採用的苞米豆團隊的dynamic-datasource-spring-boot-starter 去實現多數據源

代碼實現部分如下

首先貼出我們的entity,Service,

UserEntity

package org.wuyd.testdockgame.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;

/**
 * @author wuyd
 * 2019/7/11 10:33
 */
@Data
@Builder
@TableName("user")
public class UserEntity implements Serializable {
    @TableId("id")
    private Integer id;
    private String age;
    private String name;
    private String password;
    private String sex;
}

UserMapper

package org.wuyd.testdockgame.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.wuyd.testdockgame.entity.UserEntity;

/**
 * @author wuyd
 * 2019/7/11 10:40
 */
@Mapper
public interface  UserMapper extends BaseMapper<UserEntity> {
}

UserService

package org.wuyd.testdockgame.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.wuyd.testdockgame.entity.UserEntity;

/**
 * @author wuyd
 * 2019/7/11 10:42
 */
public interface UserService extends IService<UserEntity> {
}

兩個實現類,不同數據源的UserServiceImpl

package org.wuyd.testdockgame.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.wuyd.testdockgame.entity.UserEntity;
import org.wuyd.testdockgame.mapper.UserMapper;
import org.wuyd.testdockgame.service.UserService;

/**
 * @author wuyd
 * 2019/7/11 10:43
 */
@Service("userService1")
public class UserService1Impl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
}

package org.wuyd.testdockgame.service.impl;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.wuyd.testdockgame.entity.UserEntity;
import org.wuyd.testdockgame.mapper.UserMapper;
import org.wuyd.testdockgame.service.UserService;

/**
 * @author wuyd
 * 2019/7/11 10:43
 */
@DS("db2")
@Service("userService2")
public class UserService2Impl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
}

1.不用Druid的情況下

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.wuyd</groupId>
    <artifactId>test-dock-game</artifactId>
    <version>0.0.1</version>
    <packaging>war</packaging>
    <name>test-dock-game</name>
    <description>測試用項目</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.4.2</version>
        </dependency>

        <dependency>
            <groupId>p6spy</groupId>
            <artifactId>p6spy</artifactId>
            <version>3.8.0</version>
        </dependency>
    </dependencies>

</project>

配置文件

spring:
  datasource:
    p6spy: true
    dynamic:
      datasource:
        master:
          username: root
          password: 
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test1?characterEncoding=utf8&useSSL=true
        db2:
          username: root
          password: 
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test2?characterEncoding=utf8&useSSL=true
2.看結果
E:\dev\Java\jdk8\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:63232,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.profiles.active=dev -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:C:\Users\wuyd.wuyd\.IntelliJIdea2019.1\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "E:\dev\Java\jdk8\jre\lib\charsets.jar;E:\dev\Java\jdk8\jre\lib\deploy.jar;E:\dev\Java\jdk8\jre\lib\ext\access-bridge-64.jar;E:\dev\Java\jdk8\jre\lib\ext\cldrdata.jar;E:\dev\Java\jdk8\jre\lib\ext\dnsns.jar;E:\dev\Java\jdk8\jre\lib\ext\jaccess.jar;E:\dev\Java\jdk8\jre\lib\ext\jfxrt.jar;E:\dev\Java\jdk8\jre\lib\ext\localedata.jar;E:\dev\Java\jdk8\jre\lib\ext\nashorn.jar;E:\dev\Java\jdk8\jre\lib\ext\sunec.jar;E:\dev\Java\jdk8\jre\lib\ext\sunjce_provider.jar;E:\dev\Java\jdk8\jre\lib\ext\sunmscapi.jar;E:\dev\Java\jdk8\jre\lib\ext\sunpkcs11.jar;E:\dev\Java\jdk8\jre\lib\ext\zipfs.jar;E:\dev\Java\jdk8\jre\lib\javaws.jar;E:\dev\Java\jdk8\jre\lib\jce.jar;E:\dev\Java\jdk8\jre\lib\jfr.jar;E:\dev\Java\jdk8\jre\lib\jfxswt.jar;E:\dev\Java\jdk8\jre\lib\jsse.jar;E:\dev\Java\jdk8\jre\lib\management-agent.jar;E:\dev\Java\jdk8\jre\lib\plugin.jar;E:\dev\Java\jdk8\jre\lib\resources.jar;E:\dev\Java\jdk8\jre\lib\rt.jar;E:\dev\IdeaProjects\test-dock-game\target\classes;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-thymeleaf\2.1.6.RELEASE\spring-boot-starter-thymeleaf-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter\2.1.6.RELEASE\spring-boot-starter-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot\2.1.6.RELEASE\spring-boot-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-logging\2.1.6.RELEASE\spring-boot-starter-logging-2.1.6.RELEASE.jar;E:\dev\maven-repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\dev\maven-repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\dev\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;E:\dev\maven-repository\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;E:\dev\maven-repository\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;E:\dev\maven-repository\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;E:\dev\maven-repository\org\thymeleaf\thymeleaf-spring5\3.0.11.RELEASE\thymeleaf-spring5-3.0.11.RELEASE.jar;E:\dev\maven-repository\org\thymeleaf\thymeleaf\3.0.11.RELEASE\thymeleaf-3.0.11.RELEASE.jar;E:\dev\maven-repository\org\attoparser\attoparser\2.0.5.RELEASE\attoparser-2.0.5.RELEASE.jar;E:\dev\maven-repository\org\unbescape\unbescape\1.1.6.RELEASE\unbescape-1.1.6.RELEASE.jar;E:\dev\maven-repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;E:\dev\maven-repository\org\thymeleaf\extras\thymeleaf-extras-java8time\3.0.4.RELEASE\thymeleaf-extras-java8time-3.0.4.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-web\2.1.6.RELEASE\spring-boot-starter-web-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-json\2.1.6.RELEASE\spring-boot-starter-json-2.1.6.RELEASE.jar;E:\dev\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.9.9\jackson-databind-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\dev\maven-repository\com\fasterxml\jackson\core\jackson-core\2.9.9\jackson-core-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.9\jackson-datatype-jdk8-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.9\jackson-datatype-jsr310-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.9\jackson-module-parameter-names-2.9.9.jar;E:\dev\maven-repository\org\hibernate\validator\hibernate-validator\6.0.17.Final\hibernate-validator-6.0.17.Final.jar;E:\dev\maven-repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\dev\maven-repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\dev\maven-repository\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;E:\dev\maven-repository\org\springframework\spring-web\5.1.8.RELEASE\spring-web-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-beans\5.1.8.RELEASE\spring-beans-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-webmvc\5.1.8.RELEASE\spring-webmvc-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-aop\5.1.8.RELEASE\spring-aop-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-context\5.1.8.RELEASE\spring-context-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-expression\5.1.8.RELEASE\spring-expression-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\projectlombok\lombok\1.18.8\lombok-1.18.8.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\2.1.6.RELEASE\spring-boot-starter-tomcat-2.1.6.RELEASE.jar;E:\dev\maven-repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\dev\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.21\tomcat-embed-core-9.0.21.jar;E:\dev\maven-repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.21\tomcat-embed-el-9.0.21.jar;E:\dev\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.21\tomcat-embed-websocket-9.0.21.jar;E:\dev\maven-repository\org\springframework\spring-core\5.1.8.RELEASE\spring-core-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-jcl\5.1.8.RELEASE\spring-jcl-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-configuration-processor\2.1.6.RELEASE\spring-boot-configuration-processor-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\apache\httpcomponents\httpclient\4.5.9\httpclient-4.5.9.jar;E:\dev\maven-repository\org\apache\httpcomponents\httpcore\4.4.11\httpcore-4.4.11.jar;E:\dev\maven-repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;E:\dev\maven-repository\org\apache\commons\commons-lang3\3.9\commons-lang3-3.9.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-boot-starter\3.1.0\mybatis-plus-boot-starter-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus\3.1.0\mybatis-plus-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-extension\3.1.0\mybatis-plus-extension-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-core\3.1.0\mybatis-plus-core-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-annotation\3.1.0\mybatis-plus-annotation-3.1.0.jar;E:\dev\maven-repository\org\mybatis\mybatis\3.5.0\mybatis-3.5.0.jar;E:\dev\maven-repository\com\github\jsqlparser\jsqlparser\1.4\jsqlparser-1.4.jar;E:\dev\maven-repository\org\mybatis\mybatis-spring\2.0.0\mybatis-spring-2.0.0.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-autoconfigure\2.1.6.RELEASE\spring-boot-autoconfigure-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\2.1.6.RELEASE\spring-boot-starter-jdbc-2.1.6.RELEASE.jar;E:\dev\maven-repository\com\zaxxer\HikariCP\3.2.0\HikariCP-3.2.0.jar;E:\dev\maven-repository\org\springframework\spring-jdbc\5.1.8.RELEASE\spring-jdbc-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-tx\5.1.8.RELEASE\spring-tx-5.1.8.RELEASE.jar;E:\dev\maven-repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar;E:\dev\maven-repository\com\baomidou\dynamic-datasource-spring-boot-starter\2.4.2\dynamic-datasource-spring-boot-starter-2.4.2.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-aop\2.1.6.RELEASE\spring-boot-starter-aop-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\aspectj\aspectjweaver\1.9.4\aspectjweaver-1.9.4.jar;E:\dev\maven-repository\p6spy\p6spy\3.8.0\p6spy-3.8.0.jar;E:\dev\JetBrains\IntelliJ IDEA 2019.1.3\lib\idea_rt.jar" org.wuyd.testdockgame.TestDockGameApplication
Connected to the target VM, address: '127.0.0.1:63232', transport: 'socket'

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)

2019-07-11 14:31:22.411  INFO 15532 --- [           main] o.w.t.TestDockGameApplication            : Starting TestDockGameApplication on DESKTOP-4VCGJNP with PID 15532 (E:\dev\IdeaProjects\test-dock-game\target\classes started by wuyd.wuyd in E:\dev\IdeaProjects\test-dock-game)
2019-07-11 14:31:22.413  INFO 15532 --- [           main] o.w.t.TestDockGameApplication            : The following profiles are active: dev
2019-07-11 14:31:23.784 DEBUG 15532 --- [           main] c.b.m.a.MybatisPlusAutoConfiguration     : Searching for mappers annotated with @Mapper
2019-07-11 14:31:23.784 DEBUG 15532 --- [           main] c.b.m.a.MybatisPlusAutoConfiguration     : Using auto-configuration base package 'org.wuyd.testdockgame'
2019-07-11 14:31:25.076  INFO 15532 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 80 (http)
2019-07-11 14:31:25.173  INFO 15532 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-07-11 14:31:25.174  INFO 15532 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.21]
2019-07-11 14:31:25.458  INFO 15532 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/wuyd]   : Initializing Spring embedded WebApplicationContext
2019-07-11 14:31:25.458  INFO 15532 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3014 ms
2019-07-11 14:31:25.807  INFO 15532 --- [           main] com.zaxxer.hikari.HikariDataSource       : master - Starting...
2019-07-11 14:31:26.385  INFO 15532 --- [           main] com.zaxxer.hikari.HikariDataSource       : master - Start completed.
2019-07-11 14:31:26.385  INFO 15532 --- [           main] com.zaxxer.hikari.HikariDataSource       : db2 - Starting...
2019-07-11 14:31:26.418  INFO 15532 --- [           main] com.zaxxer.hikari.HikariDataSource       : db2 - Start completed.
2019-07-11 14:31:26.418  INFO 15532 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 初始共加載 2 個數據源
2019-07-11 14:31:26.418  INFO 15532 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 動態數據源-加載 db2 成功
2019-07-11 14:31:26.418  INFO 15532 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 動態數據源-加載 master 成功
2019-07-11 14:31:26.418  INFO 15532 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 當前的默認數據源是單數據源,數據源名爲 master
2019-07-11 14:31:26.655 DEBUG 15532 --- [           main] c.b.m.core.toolkit.GlobalConfigUtils     : DeBug: MyBatis Plus Global configuration Initializing !

2019-07-11 14:31:27.549  INFO 15532 --- [           main] o.w.t.TestDockGameApplication            : Started TestDockGameApplication in 5.697 seconds (JVM running for 7.4)
2019-07-11 14:33:32.196  INFO 15532 --- [p-nio-80-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/wuyd]   : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-07-11 14:33:32.196  INFO 15532 --- [p-nio-80-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-07-11 14:33:32.230  INFO 15532 --- [p-nio-80-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 34 ms
2019-07-11 14:33:32.295 DEBUG 15532 --- [p-nio-80-exec-1] c.b.d.d.DynamicRoutingDataSource         : 從默認數據源中返回數據
2019-07-11 14:33:32.413  INFO 15532 --- [p-nio-80-exec-1] o.w.t.controller.ThymeleafController     : [UserEntity(id=1, age=12, name=張三, password=123456, sex=男), UserEntity(id=2, age=15, name=張一, password=123456, sex=男), UserEntity(id=3, age=14, name=張四, password=123456, sex=女), UserEntity(id=4, age=13, name=張二, password=123456, sex=男)]
2019-07-11 14:33:32.418 DEBUG 15532 --- [p-nio-80-exec-1] c.b.d.d.DynamicRoutingDataSource         : 從 db2 單數據源中返回數據源
2019-07-11 14:33:32.438  INFO 15532 --- [p-nio-80-exec-1] o.w.t.controller.ThymeleafController     : [UserEntity(id=1, age=12, name=李一, password=123456, sex=男), UserEntity(id=2, age=11, name=李二, password=123456, sex=男), UserEntity(id=3, age=10, name=李三, password=1236543, sex=女)]


Druid的情況下

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>org.wuyd</groupId>
    <artifactId>test-dock-game</artifactId>
    <version>0.0.1</version>
    <packaging>war</packaging>
    <name>test-dock-game</name>
    <description>測試用項目</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

       <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>2.5.5</version>
        </dependency>

        <dependency>
            <groupId>p6spy</groupId>
            <artifactId>p6spy</artifactId>
            <version>3.8.0</version>
        </dependency>
    </dependencies>
    
    <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid-spring-boot-starter</artifactId>
          <version>1.1.10</version>
     </dependency>
        
</project>

配置文件

spring:
  datasource:
    druid:
      stat-view-servlet:
        loginUsername: admin
        loginPassword: 123456
    dynamic:
      druid: #以下是全局默認值,可以全局更改
        minIdle: 5
        maxActive: 20
        filters: stat,wall # 注意這個值和druid原生不一致,默認啓動了stat,wall
        stat:
          merge-sql: true
          log-slow-sql: true
      datasource:
        master:
          username: root
          password: 
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test1?characterEncoding=utf8&useSSL=true
        db2:
          username: root
          password: 
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test2?characterEncoding=utf8&useSSL=true

2.看結果
E:\dev\Java\jdk8\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64668,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.profiles.active=dev -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:C:\Users\wuyd.wuyd\.IntelliJIdea2019.1\system\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "E:\dev\Java\jdk8\jre\lib\charsets.jar;E:\dev\Java\jdk8\jre\lib\deploy.jar;E:\dev\Java\jdk8\jre\lib\ext\access-bridge-64.jar;E:\dev\Java\jdk8\jre\lib\ext\cldrdata.jar;E:\dev\Java\jdk8\jre\lib\ext\dnsns.jar;E:\dev\Java\jdk8\jre\lib\ext\jaccess.jar;E:\dev\Java\jdk8\jre\lib\ext\jfxrt.jar;E:\dev\Java\jdk8\jre\lib\ext\localedata.jar;E:\dev\Java\jdk8\jre\lib\ext\nashorn.jar;E:\dev\Java\jdk8\jre\lib\ext\sunec.jar;E:\dev\Java\jdk8\jre\lib\ext\sunjce_provider.jar;E:\dev\Java\jdk8\jre\lib\ext\sunmscapi.jar;E:\dev\Java\jdk8\jre\lib\ext\sunpkcs11.jar;E:\dev\Java\jdk8\jre\lib\ext\zipfs.jar;E:\dev\Java\jdk8\jre\lib\javaws.jar;E:\dev\Java\jdk8\jre\lib\jce.jar;E:\dev\Java\jdk8\jre\lib\jfr.jar;E:\dev\Java\jdk8\jre\lib\jfxswt.jar;E:\dev\Java\jdk8\jre\lib\jsse.jar;E:\dev\Java\jdk8\jre\lib\management-agent.jar;E:\dev\Java\jdk8\jre\lib\plugin.jar;E:\dev\Java\jdk8\jre\lib\resources.jar;E:\dev\Java\jdk8\jre\lib\rt.jar;E:\dev\IdeaProjects\test-dock-game\target\classes;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-thymeleaf\2.1.6.RELEASE\spring-boot-starter-thymeleaf-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter\2.1.6.RELEASE\spring-boot-starter-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot\2.1.6.RELEASE\spring-boot-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-logging\2.1.6.RELEASE\spring-boot-starter-logging-2.1.6.RELEASE.jar;E:\dev\maven-repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\dev\maven-repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\dev\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;E:\dev\maven-repository\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;E:\dev\maven-repository\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;E:\dev\maven-repository\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;E:\dev\maven-repository\org\thymeleaf\thymeleaf-spring5\3.0.11.RELEASE\thymeleaf-spring5-3.0.11.RELEASE.jar;E:\dev\maven-repository\org\thymeleaf\thymeleaf\3.0.11.RELEASE\thymeleaf-3.0.11.RELEASE.jar;E:\dev\maven-repository\org\attoparser\attoparser\2.0.5.RELEASE\attoparser-2.0.5.RELEASE.jar;E:\dev\maven-repository\org\unbescape\unbescape\1.1.6.RELEASE\unbescape-1.1.6.RELEASE.jar;E:\dev\maven-repository\org\thymeleaf\extras\thymeleaf-extras-java8time\3.0.4.RELEASE\thymeleaf-extras-java8time-3.0.4.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-web\2.1.6.RELEASE\spring-boot-starter-web-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-json\2.1.6.RELEASE\spring-boot-starter-json-2.1.6.RELEASE.jar;E:\dev\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.9.9\jackson-databind-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\dev\maven-repository\com\fasterxml\jackson\core\jackson-core\2.9.9\jackson-core-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.9\jackson-datatype-jdk8-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.9\jackson-datatype-jsr310-2.9.9.jar;E:\dev\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.9\jackson-module-parameter-names-2.9.9.jar;E:\dev\maven-repository\org\hibernate\validator\hibernate-validator\6.0.17.Final\hibernate-validator-6.0.17.Final.jar;E:\dev\maven-repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\dev\maven-repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\dev\maven-repository\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;E:\dev\maven-repository\org\springframework\spring-web\5.1.8.RELEASE\spring-web-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-beans\5.1.8.RELEASE\spring-beans-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-webmvc\5.1.8.RELEASE\spring-webmvc-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-aop\5.1.8.RELEASE\spring-aop-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-context\5.1.8.RELEASE\spring-context-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-expression\5.1.8.RELEASE\spring-expression-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\projectlombok\lombok\1.18.8\lombok-1.18.8.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\2.1.6.RELEASE\spring-boot-starter-tomcat-2.1.6.RELEASE.jar;E:\dev\maven-repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\dev\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.21\tomcat-embed-core-9.0.21.jar;E:\dev\maven-repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.21\tomcat-embed-el-9.0.21.jar;E:\dev\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.21\tomcat-embed-websocket-9.0.21.jar;E:\dev\maven-repository\org\springframework\spring-core\5.1.8.RELEASE\spring-core-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-jcl\5.1.8.RELEASE\spring-jcl-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-configuration-processor\2.1.6.RELEASE\spring-boot-configuration-processor-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\apache\httpcomponents\httpclient\4.5.9\httpclient-4.5.9.jar;E:\dev\maven-repository\org\apache\httpcomponents\httpcore\4.4.11\httpcore-4.4.11.jar;E:\dev\maven-repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;E:\dev\maven-repository\org\apache\commons\commons-lang3\3.9\commons-lang3-3.9.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-boot-starter\3.1.0\mybatis-plus-boot-starter-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus\3.1.0\mybatis-plus-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-extension\3.1.0\mybatis-plus-extension-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-core\3.1.0\mybatis-plus-core-3.1.0.jar;E:\dev\maven-repository\com\baomidou\mybatis-plus-annotation\3.1.0\mybatis-plus-annotation-3.1.0.jar;E:\dev\maven-repository\org\mybatis\mybatis\3.5.0\mybatis-3.5.0.jar;E:\dev\maven-repository\com\github\jsqlparser\jsqlparser\1.4\jsqlparser-1.4.jar;E:\dev\maven-repository\org\mybatis\mybatis-spring\2.0.0\mybatis-spring-2.0.0.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-autoconfigure\2.1.6.RELEASE\spring-boot-autoconfigure-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\2.1.6.RELEASE\spring-boot-starter-jdbc-2.1.6.RELEASE.jar;E:\dev\maven-repository\com\zaxxer\HikariCP\3.2.0\HikariCP-3.2.0.jar;E:\dev\maven-repository\org\springframework\spring-jdbc\5.1.8.RELEASE\spring-jdbc-5.1.8.RELEASE.jar;E:\dev\maven-repository\org\springframework\spring-tx\5.1.8.RELEASE\spring-tx-5.1.8.RELEASE.jar;E:\dev\maven-repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar;E:\dev\maven-repository\com\alibaba\druid-spring-boot-starter\1.1.10\druid-spring-boot-starter-1.1.10.jar;E:\dev\maven-repository\com\alibaba\druid\1.1.10\druid-1.1.10.jar;E:\dev\maven-repository\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;E:\dev\maven-repository\com\baomidou\dynamic-datasource-spring-boot-starter\2.5.5\dynamic-datasource-spring-boot-starter-2.5.5.jar;E:\dev\maven-repository\org\springframework\boot\spring-boot-starter-aop\2.1.6.RELEASE\spring-boot-starter-aop-2.1.6.RELEASE.jar;E:\dev\maven-repository\org\aspectj\aspectjweaver\1.9.4\aspectjweaver-1.9.4.jar;E:\dev\maven-repository\p6spy\p6spy\3.8.0\p6spy-3.8.0.jar;E:\dev\JetBrains\IntelliJ IDEA 2019.1.3\lib\idea_rt.jar" org.wuyd.testdockgame.TestDockGameApplication
Connected to the target VM, address: '127.0.0.1:64668', transport: 'socket'

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.6.RELEASE)

2019-07-11 15:16:29.200  INFO 14152 --- [           main] o.w.t.TestDockGameApplication            : Starting TestDockGameApplication on DESKTOP-4VCGJNP with PID 14152 (E:\dev\IdeaProjects\test-dock-game\target\classes started by wuyd.wuyd in E:\dev\IdeaProjects\test-dock-game)
2019-07-11 15:16:29.202  INFO 14152 --- [           main] o.w.t.TestDockGameApplication            : The following profiles are active: dev
2019-07-11 15:16:29.701 DEBUG 14152 --- [           main] c.b.m.a.MybatisPlusAutoConfiguration     : Searching for mappers annotated with @Mapper
2019-07-11 15:16:29.702 DEBUG 14152 --- [           main] c.b.m.a.MybatisPlusAutoConfiguration     : Using auto-configuration base package 'org.wuyd.testdockgame'
2019-07-11 15:16:30.157  INFO 14152 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 80 (http)
2019-07-11 15:16:30.173  INFO 14152 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-07-11 15:16:30.174  INFO 14152 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.21]
2019-07-11 15:16:30.301  INFO 14152 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/wuyd]   : Initializing Spring embedded WebApplicationContext
2019-07-11 15:16:30.302  INFO 14152 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1074 ms
2019-07-11 15:16:30.400  INFO 14152 --- [           main] c.b.d.d.DynamicDataSourceCreator         : 動態數據源-檢測到druid存在,如配置中未指定type,druid會默認配置
2019-07-11 15:16:30.529  INFO 14152 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1,master} inited
2019-07-11 15:16:30.530  INFO 14152 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2,db2} inited
2019-07-11 15:16:30.530  INFO 14152 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 初始共加載 2 個數據源
2019-07-11 15:16:30.530  INFO 14152 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 動態數據源-加載 db2 成功
2019-07-11 15:16:30.530  INFO 14152 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 動態數據源-加載 master 成功
2019-07-11 15:16:30.530  INFO 14152 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 當前的默認數據源是單數據源,數據源名爲 master

2019-07-11 15:16:30.769 DEBUG 14152 --- [           main] c.b.d.d.DynamicRoutingDataSource         : 從默認數據源中返回數據

2019-07-11 15:16:33.371  INFO 14152 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 80 (http) with context path '/wuyd'
2019-07-11 15:16:33.373  INFO 14152 --- [           main] o.w.t.TestDockGameApplication            : Started TestDockGameApplication in 4.446 seconds (JVM running for 5.003)
2019-07-11 15:16:49.660  INFO 14152 --- [p-nio-80-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/wuyd]   : Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-07-11 15:16:49.660  INFO 14152 --- [p-nio-80-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-07-11 15:16:49.673  INFO 14152 --- [p-nio-80-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 13 ms
2019-07-11 15:16:49.967 DEBUG 14152 --- [p-nio-80-exec-2] c.b.d.d.DynamicRoutingDataSource         : 從默認數據源中返回數據
2019-07-11 15:16:50.347  INFO 14152 --- [p-nio-80-exec-2] o.w.t.controller.ThymeleafController     : [UserEntity(id=1, age=12, name=張三, password=123456, sex=男), UserEntity(id=2, age=15, name=張一, password=123456, sex=男), UserEntity(id=3, age=14, name=張四, password=123456, sex=女), UserEntity(id=4, age=13, name=張二, password=123456, sex=男)]
2019-07-11 15:16:50.351 DEBUG 14152 --- [p-nio-80-exec-2] c.b.d.d.DynamicRoutingDataSource         : 從 db2 單數據源中返回數據源
2019-07-11 15:16:50.424  INFO 14152 --- [p-nio-80-exec-2] o.w.t.controller.ThymeleafController     : [UserEntity(id=1, age=12, name=李一, password=123456, sex=男), UserEntity(id=2, age=11, name=李二, password=123456, sex=男), UserEntity(id=3, age=10, name=李三, password=1236543, sex=女)]



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章