工程里面会遇到mysql数据读写分离,跑批程序可以从slave(读)节点,拉取数据,系统网站操作master(写)节点,下面是工程搭建环境
版本 : jdk 1.8
idea:2019.1
mysql:8.0.12
druid数据连接池:1.0.28
tk.mybatis:4.0.1
springboot 2.0.3.RELEASE
新建工程和导入在此省略。
工程目录结构如下:
![](https://img.haomeiwen.com/i1309909/fe7a299259580a58.png)
看下druid配置多数据源代码
![](https://img.haomeiwen.com/i1309909/f47a839bd445787c.png)
把多数据设置在dynamicDataSource,默认读取master数据库
![](https://img.haomeiwen.com/i1309909/0436eb40d1008f7a.png)
数据源配置完毕,现在需要在Service中执行方法之前选择哪个数据库,这个时候想到是spring aop技术,在每个方法之前通过注解来标识,具体如下:
![](https://img.haomeiwen.com/i1309909/a01be05c55f45b59.png)
Service实现:
![](https://img.haomeiwen.com/i1309909/372a4969063f8c3b.png)
以上是多数据源配置,这里有一点强调,tkmapper 中默认自带方法是不能实现多数据源切换,例如:Mapper.selectAll() 等 方法都不行
项目运行结果
master数据库表中数据
![](https://img.haomeiwen.com/i1309909/75198f4e4de20b30.png)
项目访问master地址http://127.0.0.1:8082/listMaster
![](https://img.haomeiwen.com/i1309909/75fe716c22b948e6.png)
slave数据库表中数据
![](https://img.haomeiwen.com/i1309909/eeb7fe585e50b6f0.png)
项目访问slave 地址http://127.0.0.1:8082/listSlave
![](https://img.haomeiwen.com/i1309909/e15dc995e6b5a750.png)
收工!!
网友评论