欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章https://www.javaman.cn/

基于不同的数据源进行数据比对,比较两个数据库的表之间数据的总量,以及处理后的总量,按天进行比对,将比对结果输出到核对表中。

一、工程目录

二、Mybatisplus多数据源配置

1、pom.xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency> <dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
2、application.yml
spring:
datasource:
dynamic:
primary: tfss #默认数据源
strict: false
datasource:
ttba: #数据源1
username: ttba
password: ttba
url: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
driver-class-name: oracle.jdbc.driver.OracleDriver
tfss: #数据源2
username: tfss
password: tfss
url: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
driver-class-name: oracle.jdbc.driver.OracleDriver
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启MybatisPlus输出

三、业务代码

1、MybatisPlusConfig
package com.ds.check.config;

import com.baomidou.mybatisplus.extension.incrementer.OracleKeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; /**
添加oracle的主键策略
*/
@Configuration
public class MybatisPlusConfig {
@Bean
public OracleKeyGenerator oracleKeyGenerator(){
return new OracleKeyGenerator();
}
}
2、实体类
核对结果表
@Data
@TableName("ST_ZFQLC_CHECK_DATA")
@KeySequence("SEQ_ZFQLC_CHECK_DATA")
public class ZfqlcCheckData {
@TableId(value = "Id",type = IdType.INPUT)
private Integer id;
private String xtbaTable;
private String zfqlcTable;
private String transTable;
private Integer zfqlcSl;
private Integer transSl;
private Integer xtbaSl;
private String cycle;
配置表
package com.ds.check.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; @Data
@TableName("ST_ZFQLC_CHECK_TABLE")
public class ZfqlcCheckTable {
private String xtbaTable;
private String zfqlcTable;
private String transTable;
}
3、mapper接口
package com.ds.check.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; @Mapper
@DS("tfss") //DS关键字配置数据源
public interface TransMapper extends BaseMapper {
Integer selectTotal(@Param("tableName") String tableName);
}
package com.ds.check.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; @Mapper
@DS("ttba") //DS关键字配置数据源
public interface XtbaMapper extends BaseMapper {
Integer selectTotal(@Param("tableName") String tableName);
}
package com.ds.check.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ds.check.entity.ZfqlcCheckData;
import org.apache.ibatis.annotations.Mapper; @Mapper
@DS("ttfs")
public interface ZfqlcCheckDataMapper extends BaseMapper<ZfqlcCheckData> {
}
package com.ds.check.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ds.check.entity.ZfqlcCheckData;
import com.ds.check.entity.ZfqlcCheckTable;
import org.apache.ibatis.annotations.Mapper; @Mapper
@DS("ttfs")
public interface ZfqlcCheckTableMapper extends BaseMapper<ZfqlcCheckTable> {
}
package com.ds.check.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; @Mapper
@DS("ttfs")
public interface ZfqlcMapper extends BaseMapper {
Integer selectTotal(@Param("tableName") String tableName);
}
4、mapper.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ds.check.mapper.ZfqlcMapper"> <!-- selectByName -->
<select id="selectTotal" resultType="java.lang.Integer">
select count(*) from ${tableName} where to_char(zxgxsj,'yyyymmdd')=to_char(sysdate-1,'yyyymmdd')
</select> </mapper>

四、主程序入口

package com.ds.check;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import com.ds.check.entity.ZfqlcCheckData;
import com.ds.check.entity.ZfqlcCheckTable;
import com.ds.check.mapper.*;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List; @SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
@MapperScan(value = "com.ds.check.mapper")
@Slf4j
//实现CommandLineRunner类似于普通java程序的main函数入口
public class CheckApplication implements CommandLineRunner { @Autowired
private ZfqlcCheckDataMapper zfqlcCheckDataMapper;
@Autowired
private ZfqlcCheckTableMapper zfqlcCheckTableMapper; @Autowired
private XtbaMapper xtbaMapper;
@Autowired
private ZfqlcMapper zfqlcMapper;
@Autowired
private TransMapper transMapper; public static void main(String[] args) {
SpringApplication.run(CheckApplication.class, args);
} @Override
public void run(String... args) throws Exception {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE,-1);
String yesterday = new SimpleDateFormat( "yyyyMMdd").format(cal.getTime());
System.out.println(yesterday);
List<ZfqlcCheckTable> list = zfqlcCheckTableMapper.selectList(null);
for (ZfqlcCheckTable zfqlcCheckTable : list) {
log.info("开始处理记录:"+zfqlcCheckTable.getXtbaTable()+","+zfqlcCheckTable.getZfqlcTable()+","+zfqlcCheckTable.getTransTable());
Integer totalXtba = xtbaMapper.selectTotal(zfqlcCheckTable.getXtbaTable());
Integer totalZfqlc = zfqlcMapper.selectTotal(zfqlcCheckTable.getZfqlcTable());
Integer totaltrans = transMapper.selectTotal(zfqlcCheckTable.getTransTable());
ZfqlcCheckData zfqlcCheckData = new ZfqlcCheckData();
zfqlcCheckData.setXtbaTable(zfqlcCheckTable.getXtbaTable());
zfqlcCheckData.setZfqlcTable(zfqlcCheckTable.getZfqlcTable());
zfqlcCheckData.setTransTable(zfqlcCheckTable.getTransTable());
zfqlcCheckData.setXtbaSl(totalXtba);
zfqlcCheckData.setZfqlcSl(totalZfqlc);
zfqlcCheckData.setTransSl(totaltrans);
zfqlcCheckData.setCycle(yesterday);
zfqlcCheckDataMapper.insert(zfqlcCheckData);
}
}
}

Springboot+MybatisPlus多数据源比对数据的更多相关文章

  1. SpringCloud或SpringBoot+Mybatis-Plus利用mybatis插件实现数据操作记录及更新对比

    引文 本文主要介绍如何使用mybatis插件实现拦截数据库操作并根据不同需求进行数据对比分析,主要适用于系统中需要对数据操作进行记录.在更新数据时准确记录更新字段 核心:mybatis插件(拦截器). ...

  2. spring-boot+mybatisPlus+shiro的集成demo 我用了5天

    spring-boot + mybatis-plus + shiro 的集成demo我用了五天 关于shiro框架,我还是从飞机哪里听来的,就连小贱都知道,可我母鸡啊.简单百度了下,结论很好上手,比s ...

  3. IDEA上创建 Maven SpringBoot+mybatisplus+thymeleaf 项目

    概述 在WEB领域,Java也是在不断的探索和改进,从开始的JSP--->Struts1--->Struts2+Spring--->Spring MVC--->SpringBo ...

  4. 基于springboot的多数据源配置

    发布时间:2018-12-11   技术:springboot1.5.1 + maven3.0.1+ mybatis-plus-boot-starter2.3.1 + dynamic-datasour ...

  5. springboot+mybatisplus+sharding-jdbc分库分表实例

    项目实践 现在Java项目使用mybatis多一些,所以我也做了一个springboot+mybatisplus+sharding-jdbc分库分表项目例子分享给大家. 要是用的springboot+ ...

  6. MybatisPlus多数据源及事务解决思路

    关于多数据源解决方案 目前在SpringBoot框架基础上多数据源的解决方案大多手动创建多个DataSource,后续方案有三: 继承org.springframework.jdbc.datasour ...

  7. SpringBoot+Mybatis-Plus整合Sharding-JDBC5.1.1实现单库分表【全网最新】

    一.前言 小编最近一直在研究关于分库分表的东西,前几天docker安装了mycat实现了分库分表,但是都在说mycat的bug很多.很多人还是倾向于shardingsphere,其实他是一个全家桶,有 ...

  8. springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置

    一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,Druid在监控,可扩展性,稳定性和性能方面具有比较明显的优势.通过Druid提供的监控功能,可以实时观察数据库 ...

  9. springboot之多数据源配置JdbcTemplate

    springboot多数据源配置,代码如下 DataSourceConfig package com.rookie.bigdata.config; import org.springframework ...

随机推荐

  1. CabloyJS微信模块、企业微信模块已出齐

    前言 当Cabloy-企业微信模块完成时,加上之前已完成的Cabloy-微信模块,关于在CabloyJS中与微信/企业微信对接的任务已经完成了.这些模块的目标就是,只需填入各类服务的参数,就可以直接进 ...

  2. Tarjan算法模板(USACO03FALL受欢迎的牛)

    好文章 #include<bits/stdc++.h> using namespace std; const int N = 10010, M = 50010; int n, m; int ...

  3. GIF录制工具下载

    GIF录制工具(GifCam)下载地址: https://files.cnblogs.com/files/blogs/747754/GifCam.rar

  4. 9.Linux之iptables防火墙

    Linux之iptables防火墙 目录 Linux之iptables防火墙 iptables防火墙概述 netfilter和iptables之间的关系 netfilter iptables ipta ...

  5. idea运行Tomcat出现 Address localhost:8080 is already in useAddress localhost:8080 is already in use

    使用IDEA运行 tomcat时出现 Address localhost:8080 is already in use,就很奇怪,我明明只有这一个程序呀,怎么还会被占用.后来想想可能就是被其他进程占用 ...

  6. Hexo + VSCode 插入 Markdown 图片解决办法

    最近打开 typora 时发现弹窗强更,不让用 beta 版了 想到自己并不是非常需要 WYSIWYG,而且也不是经常使用 typora,于是直接退回到 VSCode 了,而且在 VSCode 里可以 ...

  7. 不要使用短路逻辑编写 stl sorter 多条件比较

    前言 最近工期紧.任务多,没有时间更新博客,就水一期吧.虽然是水,也不能太水,刚好最近工作中遇到一个 sorter 多条件排序的问题,花费了半天时间来定位解决,就说说它吧. 背景 公司产品是一个跨端的 ...

  8. HTML 超文本标记语言 (Hyper Text Markup Language)

    1.HTML是什么 HTML指的超文本标记语言(Hyper Text Markup Language),是一种用来描述网页的语言.超文本指的是除了可以包含文字之外,还可以包含图片.链接.音乐.视频.程 ...

  9. CenetOS 7设置IP

    使用ip addr查看网卡名称,如:eth0 vim /etc/sysconfig/network-scripts/ifcfg-eth0,编辑网卡名对应的配置文件: BOOTPROTO=dhcp ON ...

  10. Linux快捷方式创建模板

    1.创建快捷方式文件 sudo gedit /usr/share/applications/Navicat.desktop 模板: [Desktop Entry] Name=Navicat Exec= ...