微服务连接多个数据源

517 阅读1分钟

依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

配置

spring:
  datasource:
    dynamic:
      #主数据源
      primary: test01
      datasource:
        # test01 数据源
        test01:
          type: com.zaxxer.hikari.HikariDataSource
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: root
          url: jdbc:mysql://localhost:3306/test01?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
        # test02源
        test02:
          type: com.zaxxer.hikari.HikariDataSource
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: root
          url: jdbc:mysql://localhost:3306/test02?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai

@DS注解灵活切换数据库

@Service
public class TestDynamicDatasourceServiceImpl implements TestDynamicDatasourceService {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public List<Set> test01() {
        RowMapper<User> rowMapper =new BeanPropertyRowMapper<User>(User.class);
        List<User> userList = jdbcTemplate.query("select * from test01.user", rowMapper);
        return userList;
    }

    @DS("test02")
    @Override
    public List<User> test02() {
        RowMapper<User> rowMapper =new BeanPropertyRowMapper<User>(User.class);
        List<User> userList = jdbcTemplate.query("select * from test02.user", rowMapper);
        return userList;
    }
}

@DS注解可以加在类上,也可以加在方法上,加在方法上的优先级更高

本文使用 mdnice 排版