记录一下多数据源使用以及配置方法和注意事项
展开代码<!--多数据源--> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.6.1</version> </dependency>
配置文件:
展开代码spring: datasource: dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源. datasource: master: type: com.zaxxer.hikari.HikariDataSource url: jdbc:mysql://xxxx:3306/xx?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8&useSSL=false&allowMultiQueries=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true username: xx password: xxxxxxx driver-class-name: com.mysql.cj.jdbc.Driver hikari: max-lifetime: 0 salve: type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver username: xx password: xxxxxx url: jdbc:mysql://xxxx:xx/xx?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8&useSSL=false&allowMultiQueries=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true hikari: max-lifetime: 1800000
展开代码// 所有该Mapper的方法都使用 "slave" 数据源 @DS("slave") @Mapper public interface UserMapper { // 查询方法:使用slave数据源 List<User> listUsers(); // 新增方法:也会使用slave数据源(若需切换可单独注解) int insertUser(User user); }
展开代码@Mapper public interface UserMapper { // 查:使用slave数据源 @DS("slave") List<User> listUsers(); // 增:使用master数据源 @DS("master") int insertUser(User user); }
优先级:方法@DS > 类@DS > 全局默认数据源
确保 Mapper 接口被 Spring 扫描到(通过 @Mapper 或 @MapperScan),否则注解无法被解析。
本文作者:刘涛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!