springboot集成@DS注解实现数据源切换的方法示例

网友投稿 1280 2022-10-23

springboot集成@DS注解实现数据源切换的方法示例

springboot集成@DS注解实现数据源切换的方法示例

目录启用@DS实现数据源切换POM内添加核心jar包yml配置“核心”-使用@DS注解最后

启用@DS实现数据源切换

POM内添加核心jar包

com.baomidou

dynamic-datasource-spring-boot-starter

3.0.0

yml配置

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: business

datasource:

#数据源1

business:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/db_business?useUnicode=true&characterEncoding=utf-8

username: ****

password: ****

#数据源2

user:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=utf-8

username: ****

password: ****

#数据源3

order:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/db_order?useUnicode=true&characterEncoding=utf-8

username: ****

password: ****

“核心”-使用@DS注解

使用@DS注解的核心是什么呢?

1.注解添加在dao.mapper上无效2.注解添加到interface Service类上无效3.注解添加到interface Service方法上无效

那么,此注解应该如何使用呢?

添加@DS注解到实现类或者实现类的方法上才可以

当注解添加到类上,意味着此类里的方法都使用此数据源;当注解添加到方法上时,意味着此方法上使用的数据源优先级高于其他一切配置

@Service

@DS("slave")

public class UserServiceImpl implements UserService {

@Autowired

private JdbcTemplate jdbcTemplate;

public List> selectAll() {

return jdbcTemplate.queryForList("select * from user");

}

@Override

@DS("slave_1")

public List> selectByCondition() {

return jdbcTemplate.queryForList("select * from user where age >10");

}

最后

好了,就说这么多了,数据源切换的方式、策略有多种,比如按包区分不同数据源的方式、手动配置的数据源的方式,以及@DS注解的方式,该方式的最大特点,相对比较http://灵活,配置简洁易懂,后期维护及迭代比较乐观。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:年轻白领生活正被“公司化”(转载)
下一篇:今日、昨日、上周、本月 起始时间戳和结束时间戳
相关文章

 发表评论

暂时没有评论,来抢沙发吧~