springboot集成@DS註解實現數據源切換的方法示例
啟用@DS實現數據源切換
POM內添加核心jar包
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.0.0</version> </dependency>
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<Map<String, Object>> selectAll() { return jdbcTemplate.queryForList("select * from user"); } @Override @DS("slave_1") public List<Map<String, Object>> selectByCondition() { return jdbcTemplate.queryForList("select * from user where age >10"); }
最後
好瞭,就說這麼多瞭,數據源切換的方式、策略有多種,比如按包區分不同數據源的方式、手動配置的數據源的方式,以及@DS註解的方式,該方式的最大特點,相對比較靈活,配置簡潔易懂,後期維護及迭代比較樂觀。
到此這篇關於springboot集成@DS註解實現數據源切換的方法示例的文章就介紹到這瞭,更多相關springboot @DS註解數據源切換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL的driverClassName與url使用方式
- mybatis-plus自動填充插入更新時間有8小時時差
- SpringBoot詳解如何實現讀寫分離
- idea中springboot項目連接數據庫報錯的原因解析
- 解決mysql數據庫數據遷移達夢數據亂碼問題