天天看點

08_Spring Boot 整合 Mybatis 實作 Druid 多資料源配置

1、pom.xml

<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/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.linjb</groupId>

<artifactId>springboot-mybatis-multi-datasource</artifactId>

<packaging>war</packaging>

<version>0.0.1-SNAPSHOT</version>

<name>springboot-mybatis-multi-datasource Maven Webapp</name>

<url>http://maven.apache.org</url>

<!-- Spring Boot 啟動父依賴 -->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.1.RELEASE</version>

</parent>

<properties>

<mybatis-spring-boot>1.2.0</mybatis-spring-boot>

<mysql-connector>5.1.39</mysql-connector>

<druid>1.0.18</druid>

</properties>

<dependencies>

<!-- Spring Boot Web 依賴 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- Spring Boot Test 依賴 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

<!-- Spring Boot Mybatis 依賴 -->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>${mybatis-spring-boot}</version>

</dependency>

<!-- MySQL 連接配接驅動依賴 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<!-- Druid 資料連接配接池依賴 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>${druid}</version>

</dependency>

<!-- Junit -->

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

</dependency>

</dependencies>

<build>

<finalName>springboot-mybatis-multi-datasource</finalName>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.8</source>

<target>1.8</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

</plugins>

</build>

</project>

2、application.properties

## master 資料源配置

master.datasource.url=jdbc:mysql://localhost:3306/springbootdb?useUnicode=true&characterEncoding=utf8

master.datasource.username=root

master.datasource.password=bgsn

master.datasource.driverClassName=com.mysql.jdbc.Driver

## cluster 資料源配置

cluster.datasource.url=jdbc:mysql://localhost:3306/springbootdb_cluster?useUnicode=true&characterEncoding=utf8

cluster.datasource.username=root

cluster.datasource.password=bgsn

cluster.datasource.driverClassName=com.mysql.jdbc.Driver

3、資料源配置

多資料源配置的時候注意,必須要有一個主資料源,即 MasterDataSourceConfig 配置:

package com.linjb.config;

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.Primary;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import com.alibaba.druid.pool.DruidDataSource;

import javax.sql.DataSource;

@Configuration

// 掃描 Mapper 接口并容器管理

@MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")

public class MasterDataSourceConfig {

// 精确到 master 目錄,以便跟其他資料源隔離

static final String PACKAGE = "com.linjb.dao.master";

static final String MAPPER_LOCATION = "classpath:mapper/master

// Spring Boot 應用的辨別

@SpringBootApplication

public class Application {

public static void main(String[] args) {

// 程式啟動入口

// 啟動嵌入式的 Tomcat 并初始化 Spring 環境及其各 Spring 元件

SpringApplication.run(Application.class,args);

}

}