前言

有时,在一个项目中会用到多数据源,现在对自己在项目中多数据源的操作总结如下,有不到之处敬请批评指正!

1.pom.xml的依赖引入

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql驱动包的引入-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- 苞米豆的dynamic-datasource-spring-boot-starter:-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!-- mybatisPlus包的导入-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- 引入swagger-bootstrap-ui包 /doc.html-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
<!-- 引入oracle包 /doc.html-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>

2.在Springboot的application.yml中进行配置:

server:
port: 8081
servlet:
context-path: / spring:
application:
name: spring-boot-dynamic-demo
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
datasource:
master:
url: jdbc:oracle:thin:@localhost:1521/orcl
username: scott
password: 123456
driver-class-name: oracle.jdbc.driver.OracleDriver
slave_1:
url: jdbc:mysql://localhost:3306/lzsszhyjpt?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
logic-delete-field: deleted
mapper-locations: classpath:/mapper/**.xml

3.多个数据源如何在业务接口中配置和使用

其中配置了两个数据源,master与sub,其中选择master作为默认数据源(对应primary配置);
若想使用sub作为部分代码的数据源,可在ServiceImpl做如下配置:
@DS("sub")
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {}

4.在使用@DS注解时,有如下注意事项:

  (1)不能使用事务,否则数据源不会切换,使用的还是第一次加载的数据源;
(2)第一次加载数据源之后,第二次、第三次…操作其它数据源,如果数据源不存在,使用的还是第一次加载的数据源;
(3)数据源名称不要包含下划线,否则不能切换。

最新文章

  1. oracle与mysql创建表时的区别
  2. MySQL数据库的一些基本操作及注释
  3. Poj1743 (后缀数组)
  4. 我给女朋友讲编程html系列(3) --html中的超链接标签-a标签 和 框架frame与框架集frameset
  5. 如何避免JSP页面自动生成session对象?为什么要这么做?
  6. Windows提供了两种将DLL映像到进程地址空间的方法(隐式和显式)
  7. CSS优先级总结(转载)
  8. android 中文件加密 解密 算法实战
  9. cocos2dx进阶学习之CCAction
  10. Windows Phone APP中禁用截图
  11. android基础知识点复习之短信发送
  12. JUCE_FIFO实现分析
  13. Mixed Reality-宁波市VR/AR技术应用高研班总结
  14. 网络爬虫 - 真&#183;AC自动机
  15. 支付宝 ILLEGAL_SIGN
  16. 【机器学习】主成分分析法 PCA (I)
  17. Fiddler抓包使用教程-QuickExec
  18. BZOJ4221 : JOI2012 kangaroo
  19. Linux 下的三种时间介绍
  20. C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果

热门文章

  1. Java-GUI编程之ImageIO的使用
  2. ES Bridge跨链桥服务升级,新增BSC跨链网络
  3. 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了
  4. C#二次开发BIMFACE系列60 File Management文件管理服务及应用场景
  5. spring4+springmvc+springdataJPA+hibernate4+Junit4整合懒加载问题
  6. Linux内存、Swap、Cache、Buffer详细解析
  7. Go内存管理一文足矣
  8. 29. Divide Two Integers - LeetCode
  9. DOM获取元素、修改元素
  10. dubbo是如何实现可扩展的?(二)