springboot项目部署双数据源
首先在说明一下在开发中遇到的场景,项目中需要扫描oracle的数据库,是做的分批次扫描,所以需要将扫描的最后的坐标也就是id或者时间戳之类的存入另一个小型的数据库中,也就是H2中。在下一次扫描时取出坐标,作为oracle查询条件进行扫描
1、导入maven依赖坐标,分别为Oracle,H2,动态数据源baomidou
官网文档地址:https://baomidou.gitee.io/dynamic-datasource-doc/
com.oracle ojdbc6 11.2.0.3 com.h2database h2 ${h2.version} com.h2database connector 1.0.0
com.baomidou
dynamic-datasource-spring-boot-starter
2.4.2
2、主数据源yml配置
datasource: dynamic: primary: master datasource: master: username: system password: 123456 driver-class-name: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@127.0.0.1:1521:orcl
3、从数据源yml配置
datasource: dynamic: datasource: slave: username: root password: root driver-class-name: org.h2.Driver url: jdbc:h2:~/test
4、最后在服务层实现中添加@DS注解类区分主从数据源
@Service @DS("master") public class OrgServiceImpl implements OrgService { @Autowired DataMapper dataMapper; public List
@Service @DS("slave") public class H2DbServiceImpl implements H2DbService { @Autowired DataMapper dataMapper; @Override public Agent selectAgentAll() { return dataMapper.selectAgentAll(); } @Override public String selectInitId() { return dataMapper.selectInitId(); } @Override public String selectSourceTime() { return dataMapper.selectSourceTime(); } @Override public int updateInitId(String initId) { return dataMapper.updateInitId(initId); } @Override public int updateSourceTime(String sourceTime) { return dataMapper.updateSourceTime(sourceTime); } @Override public int insert(String initId) { return dataMapper.insertInitId(initId,System.currentTimeMillis()); } }