1、创建springboot项目,设置配置文件
server:
port: 2080
logging:
level:
cn.mrxionge.bootdemo: debug
org.springframework.web: debug
org.springframework.data: debug
mybatis-plus:
executor-type: simple
spring:
datasource:
#配置hikari连接池
hikari:
minimum-idle: 4
maximum-pool-size: 16
connection-timeout: 10000
idle-timeout: 30000
connection-init-sql: set names utf8mb4
#动态数据源配置
dynamic:
#主数据源
primary: a01
datasource:
#数据源a01
a01:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a01?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
#数据源a02
a02:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a02?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
#数据源a03
a03:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a03?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
2、创建3个数据库(a01、a02、a03)表为:user 字段:id、name、age、add...
3、pom文件引入jar依赖
<!-- mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<!-- MyBatis Plus和Dynamic Datasource的组合 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.4.2</version>
</dependency>
4、创建UserInfo实体类
package com.example.domain;
public class UserInfo {
private int id;
private int age;
private String add;
private String name;
private String remark;
public UserInfo() {
super();
// TODO Auto-generated constructor stub
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAdd() {
return add;
}
public void setAdd(String add) {
this.add = add;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public UserInfo(int id, int age, String add, String name, String remark) {
super();
this.id = id;
this.age = age;
this.add = add;
this.name = name;
this.remark = remark;
}
@Override
public String toString() {
return "UserInfo [id=" + id + ", age=" + age + ", add=" + add + ", name=" + name + ", remark=" + remark + "]";
}
}
5、创建Service类
package com.example.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.domain.UserInfo;
import com.example.mapper.MapperA01;
import com.example.mapper.MapperA02;
import com.example.mapper.MapperA03;
@Service
public class AppService {
@Autowired
private MapperA01 mapperA01;
@Autowired
private MapperA02 mapperA02;
@Autowired
private MapperA03 mapperA03;
/**
*
* @return A01方法
*/
public List<UserInfo> getUser01() {
return mapperA01.getAllUser();
}
/**
*
* @return A02方法
*/
public List<UserInfo> getUser02() {
return mapperA02.getAllUser();
}
/**
*
* @return A03方法
*/
public List<UserInfo> getUser03(){
return mapperA03.getAllUser();
}
}
6、创建mapper(MapperA01、MapperA02、MapperA03)接口
package com.example.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.example.domain.UserInfo;
@DS(value = "a01")
@Mapper
@Repository
public interface MapperA01 {
@Select("SELECT * FROM user")
List<UserInfo> getAllUser();
}
7、编写AppController
package com.example.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.domain.UserInfo;
import com.example.service.AppService;
@RestController
@SuppressWarnings("all")
public class AppController {
@Autowired
private AppService appService;
@GetMapping(path = "/get01")
public List<UserInfo> get01() {
return appService.getUser01();
}
@GetMapping(path = "/get02")
public List<UserInfo> get02() {
return appService.getUser02();
}
@GetMapping(path = "/get03")
public List<UserInfo> get03() {
return appService.getUser03();
}
}
8、启动项目验证结果
2019-12-20 11:38:16.003 INFO 8720 --- [ main] com.zaxxer.hikari.HikariDataSource : a01 - Starting...
2019-12-20 11:38:16.208 INFO 8720 --- [ main] com.zaxxer.hikari.HikariDataSource : a01 - Start completed.
2019-12-20 11:38:16.209 INFO 8720 --- [ main] com.zaxxer.hikari.HikariDataSource : a02 - Starting...
2019-12-20 11:38:16.224 INFO 8720 --- [ main] com.zaxxer.hikari.HikariDataSource : a02 - Start completed.
2019-12-20 11:38:16.224 INFO 8720 --- [ main] com.zaxxer.hikari.HikariDataSource : a03 - Starting...
2019-12-20 11:38:16.238 INFO 8720 --- [ main] com.zaxxer.hikari.HikariDataSource : a03 - Start completed.
2019-12-20 11:38:16.239 INFO 8720 --- [ main] c.b.d.d.DynamicRoutingDataSource : 初始共加载 3 个数据源
2019-12-20 11:38:16.239 INFO 8720 --- [ main] c.b.d.d.DynamicRoutingDataSource : 动态数据源-加载 a03 成功
2019-12-20 11:38:16.239 INFO 8720 --- [ main] c.b.d.d.DynamicRoutingDataSource : 动态数据源-加载 a02 成功
2019-12-20 11:38:16.239 INFO 8720 --- [ main] c.b.d.d.DynamicRoutingDataSource : 动态数据源-加载 a01 成功
2019-12-20 11:38:16.239 INFO 8720 --- [ main] c.b.d.d.DynamicRoutingDataSource : 当前的默认数据源是单数据源,数据源名为 a01
9、访问查看