zoukankan      html  css  js  c++  java
  • springboot项目部署双数据源

    首先在说明一下在开发中遇到的场景,项目中需要扫描oracle的数据库,是做的分批次扫描,所以需要将扫描的最后的坐标也就是id或者时间戳之类的存入另一个小型的数据库中,也就是H2中。在下一次扫描时取出坐标,作为oracle查询条件进行扫描

    1、导入maven依赖坐标,分别为Oracle,H2,动态数据源baomidou

            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>11.2.0.3</version>
             </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>${h2.version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>connector</artifactId>
                <version>1.0.0</version>
            </dependency>    
         <!--主从配置依赖-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
                <version>2.4.2</version>
            </dependency>

    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<Map<String, Object>> selectAllMysql(String initId, String cols,String table,String schema,String pk,String rows) {
            return dataMapper.selectAllMysql(initId, cols,table,schema,pk,rows);
        }
    
        public List<Map<String, Object>> selectAllOrcle(String initId, String cols,String table,String schema,String pk,String rows) {
            return dataMapper.selectAllOrcle(initId,cols,table,schema,pk,rows);
        }
    
    
    
        @Override
        public List<Map<String, Object>> selectMysqlByDateTime(String field, String timeField, String param, String startTime, String endTime, String schema, String table) {
            return dataMapper.selectMysqlByDateTime(field, timeField, param, startTime, endTime, schema, table);
        }
    
        @Override
        public List<Map<String, Object>> selectMysqlByLongTime(String field, String timeField,
                                                               String param, Long startTime, Long endTime, String schema, String table) {
            return dataMapper.selectMysqlByLongTime(field, timeField, param, startTime, endTime, schema, table);
        }
    
        @Override
        public List<Map<String, Object>> selectOracleByTimeStamp(String field, String timeField,
                                                                 String param, String startTime, String endTime, String schema, String table) {
            return dataMapper.selectOracleByTimeStamp(field, timeField, param, startTime, endTime, schema, table);
        }
    
        @Override
        public List<Map<String, Object>> selectOracleByNumber(String cols, String timeField, String initId, Long lastExeTime, Long nowTime, String schema, String table) {
            return dataMapper.selectOracleByNumber(cols, timeField, initId, lastExeTime, nowTime, schema, table);
        }
    
        @Override
        public Map<String, Object> selectById(Long id, String field) {
            return dataMapper.selectById(id, field);
        }
    
    }
    @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());
        }
    }
  • 相关阅读:
    Android Studio复制项目作为一个新的工程
    7-(基础入门篇)关于STM32底层程序使用说明
    6-(基础入门篇)学会编译lua固件,固件的合成
    5-(基础入门篇)学会刷Wi-Fi模块固件(刷LUA版本固件)
    STM32嵌入LUA开发(控制小灯闪耀)
    1-添加自己的Lua执行函数(ESP8266-SDK开发(lua版本))
    android 权限动态申请
    Android应用更新-自动检测版本及自动升级
    Android中AsyncTask的使用
    关于TCP和MQTT之间的转换
  • 原文地址:https://www.cnblogs.com/liuzhengkun/p/13360532.html
Copyright © 2011-2022 走看看