动态数据源使用

内容

动态数据源使用

Druid 动态数据源

一、动态数据源配置

/src/main/resources/application.yml

  1. datasource:
  2. datasource:
  3. master:
  4. url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
  5. username: root
  6. password: root
  7. driver-class-name: com.mysql.jdbc.Driver
  8. multi-datasource1:
  9. url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
  10. username: root
  11. password: root
  12. driver-class-name: com.mysql.jdbc.Driver

master 为主数据源,系统默认数据源multi-datasource1 :自定义的第三方数据源,multi-datasource1名称随便定义

二、动态数据源使用

使用 @DS 切换数据源。@DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。

注解在service实现或mapper接口方法上,但强烈不建议同时在service和mapper注解。 (可能会有问题)

注解结果
没有@DS默认数据源
@DS("dsName")dsName可以为组名也可以为具体某个库的名称

代码示例:

  1. @Service
  2. @DS("multi-datasource1")
  3. public class JeecgDemoServiceImpl implements JeecgDemoService {
  4. @Autowired
  5. private JdbcTemplate jdbcTemplate;
  6. public List<Map<String, Object>> selectAll() {
  7. return jdbcTemplate.queryForList("select * from user");
  8. }
  9. @Override
  10. @DS("multi-datasource2")
  11. public List<Map<String, Object>> selectByCondition() {
  12. return jdbcTemplate.queryForList("select * from user where age >10");
  13. }
  14. }