1、开源项目地址:MyBatis Plus & Dynamic Datasource

    Maven配置:

 <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.4.</version>
</dependency>

        配置文件说明:

server:
port:
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:
maximum-pool-size:
connection-timeout:
idle-timeout:
connection-init-sql: set names utf8mb4
#动态数据源配置
dynamic:
#主数据源
primary: a01
datasource:
#数据源a01
a01:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a01?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password:
#数据源a02
a02:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a02?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password:
#数据源a03
a03:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/a03?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password:

  测试:新建三个不同的mapper文件,每个mapper文件对应一个数据源,通过调用不同的mapper文件中的方法实现查询不同数据库中的数据

       Mapper示例:   

@DS(value = "a01")
@Mapper
public interface MapperA01 extends BaseMapper<UserInfo> {
@Select("SELECT * FROM user_info")
List<UserInfo> getAllUser();
}
@DS(value = "a02")
@Mapper
public interface MapperA02 extends BaseMapper<UserInfo> {
@Select("SELECT * FROM user_info")
List<UserInfo> getAllUser();
}
@DS(value = "a03")
@Mapper
public interface MapperA03 extends BaseMapper<UserInfo> {
@Select("SELECT * FROM user_info")
List<UserInfo> getAllUser();
}

   Service示例:

    

@Service
public class AppService { @Autowired
private MapperA01 mapperA01; @Autowired
private MapperA02 mapperA02; @Autowired
private MapperA03 mapperA03; /**
* 查询A01库中的数据
*
* @return 用户信息列表
*/
List<UserInfo> getUser01() {
return mapperA01.getAllUser();
} /**
* 查询A02库中的数据
*
* @return 用户信息列表
*/
List<UserInfo> getUser02() {
return mapperA02.getAllUser();
} /**
* 查询A03库中的数据
*
* @return 用户信息列表
*/
List<UserInfo> getUser03() {
return mapperA03.getAllUser();
}
}

   Controller示例:

@RestController
public class AppHandler { @Autowired
private AppService service; @GetMapping(path = "/get01")
public Mono get01() {
//查询A01数据
return Mono.fromSupplier(service::getUser01);
} @GetMapping(path = "/get02")
public Mono get02() {
//查询A02数据
return Mono.fromSupplier(service::getUser02);
} @GetMapping(path = "/get03")
public Mono get03() {
//查询A03数据
return Mono.fromSupplier(service::getUser03);
}
}

版权声明:本文为CSDN博主「MrXionGe」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31226223/article/details/85322561

最新文章

  1. 【svn】SSL error: A TLS warning alert has been received的解决方法
  2. 自定义RadioButton样式
  3. LVS+MYCAT+读写分离+MYSQL主备同步部署手册
  4. HDU 5029 Relief grain --树链剖分第一题
  5. sql server触发器中增删改判断
  6. HDU 4022 Bombing(stl,map,multiset,iterater遍历)
  7. Connect them
  8. AVAudioPlayer音频播放器-备用
  9. 浅析SQL Server数据库中的伪列以及伪列的含义
  10. PE格式第九讲,资源表解析
  11. git一键部署代码到远程服务器(linux)(采坑总结)
  12. hdu 5489(LIS最长上升子序列)
  13. 文件I/O实践(3) --文件共享与fcntl
  14. 线程池ThreadPoolExecutor类的使用
  15. 【Java基础】【25多线程(下)&amp;GUI】
  16. Odoo : ORM API
  17. 【转载】C++宏定义详解
  18. vorpal 又一个方便的cli 开发包
  19. app hybrid
  20. Java的类名与文件名必须一致

热门文章

  1. SpringMVC学习记录(六)--Validator验证
  2. JVM系列3:JVM垃圾回收
  3. centos7 apache php git pull
  4. 四十四:数据库之SQLAlchemy之join实现复杂查询
  5. 工具栏对象GUI Status 与GUI Title
  6. Linux从一个服务器拷贝文件到另一个服务器上
  7. Delphi导出Excel的设置操作
  8. Linux(Debian)发行版中文输入法
  9. html+css实现奥运五环(环环相扣)
  10. [IJCAI-17 口碑商家客流量预测]