spring jdbcTemplate实现中间库方式同步数据

中间库方式同步数据

在 Spring 的 IoC 容器中配置一个 JdbcTemplate 的 bean,将 DataSource 注入进来,然后再把JdbcTemplate 注入到自定义DAO 中。

需求:将档案、部门基础数据写入中间库,以档案为例

  1. trigger

    查看所有trigger,查看trigger创建语句

show create TRIGGER trg_staffinfo_delete
select * from information_schema.`TRIGGERS`

在创建、修改和删除档案信息时,往同步状态表中加入数据,trigger创建语句如下:

#档案创建
CREATE  TRIGGER `trg_staffinfo_insert` AFTER INSERT ON `t_per_staffinfo` FOR EACH ROW BEGIN 
INSERT INTO t_att_userorg_sync_mark(id,relateID,relateName,relateType,synchro,syncType,domain,createtime)
VALUES(UUID(),new.staffId,new.staffName,1,‘N‘,1,‘C6‘,NOW());
END
#档案更新
CREATE  TRIGGER `trg_staffinfo_update` AFTER UPDATE ON `t_per_staffinfo` FOR EACH ROW BEGIN 
if 
new.staffId         !=old.staffId OR      
new.staffName	      !=old.staffName	OR  
new.sex             !=old.sex  OR          
new.recruitsDate    !=old.recruitsDate OR
new.personType      !=old.personType OR   
new.leaveDate       !=old.leaveDate OR   
new.techLevel       !=old.techLevel OR   
new.postName        !=old.postName OR   
new.postDirection   !=old.postDirection OR
new.cengjiPCode     !=old.cengjiPCode OR  
new.deptCode        !=old.deptCode OR     
new.deptName        !=old.deptName OR 
new.staffStatus     !=old.staffStatus OR         
new.officeAddress   !=old.officeAddress OR
new.sfcb !=old.sfcb
THEN 
INSERT INTO t_att_userorg_sync_mark(id,relateID,relateName,relateType,synchro,syncType,domain,createtime)
VALUES(UUID(),old.staffId,old.staffName,1,‘N‘,2,‘C6‘,NOW());
END IF;
END
#档案删除
CREATE TRIGGER `trg_staffinfo_delete` AFTER DELETE ON `t_per_staffinfo` FOR EACH ROW BEGIN 
INSERT INTO t_att_userorg_sync_mark(id,relateID,relateName,relateType,synchro,syncType,domain,createtime)
VALUES(UUID(),old.staffId,old.staffName,1,‘N‘,3,‘C6‘,NOW());
END

定时任务——采用easyscheduleJava代码(以添加为例)

	public int addHrEmp(final HrEmpPo t) {
		return jdbcTemplate.update("INSERT INTO HR_EMP(C_CODE,C_NAME,C_GENDER,C_IDCARD,C_HIREDATE,C_EMPLOYEESTATUS,LIZHIDATE,C_JOBNAME,JIBIE,C_UNITCODE,C_UNITNAME,LEIBIE,SynchFlagID,OfficeAdd,c_isputmoney,c_isputeffDate)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);",
			new  PreparedStatementSetter(){
				@Override
				public void setValues(PreparedStatement ps) throws SQLException {
					ps.setString(1, t.getCcode());
					ps.setString(2, t.getCname());
					ps.setString(3, t.getCgender());
					ps.setString(4, t.getIdcard());
					ps.setString(5, t.getChiredate());
					ps.setString(6, t.getCemployeestatus());
					ps.setString(7, t.getLizhidate());
					ps.setString(8, t.getCjobname());
					ps.setString(9, t.getJibie());
					ps.setString(10, t.getCunitcode());
					ps.setString(11, t.getCunitname());
					ps.setString(12, t.getLeibie());
					ps.setString(13, t.getSynchflagID());
					ps.setString(14, t.getOfficeAddress());
					ps.setString(15, t.getC_isputmoney());
					ps.setDate(16, new Date(t.getC_isputeffDate().getTime()));
				}
		});
	}

spring-jdbc配置文件

<context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true" />
<bean id="hrEmpDao" class="com.fx.oa.module.att.attendance.server.dao.impl.HrEmpDao">
		<property name="jdbcTemplate" ref="jdbcTemplateC6" />
	</bean>
	<bean id="jdbcTemplateC6" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSourceC6" />
	</bean>
		<!-- C6交互中间库数据源 -->
	<bean id="dataSourceC6" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${c6.jdbc.driverClassName}" />
		<property name="jdbcUrl" value="${c6.jdbc.url}" />
		<property name="user" value="${c6.jdbc.username}" />
		<property name="password" value="${c6.jdbc.password}" />

		<property name="autoCommitOnClose" value="true" />
		<property name="checkoutTimeout" value="${hpool.checkoutTimeout}" />
		<property name="initialPoolSize" value="${hpool.minPoolSize}" />
		<property name="minPoolSize" value="${hpool.minPoolSize}" />
		<property name="maxPoolSize" value="${hpool.maxPoolSize}" />
		<property name="maxIdleTime" value="${hpool.maxIdleTime}" />
		<property name="acquireIncrement" value="${hpool.acquireIncrement}" />
		<property name="maxIdleTimeExcessConnections" value="${hpool.maxIdleTimeExcessConnections}" />
	</bean>
时间: 2024-11-03 05:20:52

spring jdbcTemplate实现中间库方式同步数据的相关文章

Sql2008 r2 使用ftp 公布和订阅方式同步数据

Sql2008 r2使用公布和订阅方式同步数据 因为非常多图片 本篇没有图片 详情能够进入下载页  http://download.csdn.net/download/yefighter/7603741 1:公布服务器:公布方 sql2008 r2 iis7.5 windows server 2008 请登入服务器进行操作 不要用sqlserver远程连接 必须开启sqlserver agent服务以及开机自己主动启动 右键属性 打开sqlserver 点击新建本地公布 第一次公布的时候 会提示

Sql2008 r2 使用ftp 发布和订阅方式同步数据

Sql2008 r2使用发布和订阅方式同步数据 由于很多图片 本篇没有图片 详情可以进入下载页  http://download.csdn.net/download/yefighter/7603741 1:发布服务器:发布方 sql2008 r2 iis7.5 windows server 2008 请登入服务器进行操作 不要用sqlserver远程连接 必须开启sqlserver agent服务以及开机自动启动 右键属性 打开sqlserver 点击新建本地发布 第一次发布的时候 会提示创建发

spring jdbcTemplate批量更新数据

方法:先实现BatchPreparedStatementSetter接口,然后再调用JdbcTemplate的batchUpdate(sql,setter)操作,参数sql是预编译语句 ,setter是BatchPreparedStatementSetter的一个实例.或者使用内部匿名类方式. BatchPreparedStatementSetter接口 public interface BatchPreparedStatementSetter{ public int getBatchSize(

使用Logstash同步数据至Elasticsearch,Spring Boot中集成Elasticsearch实现搜索

安装logstash.同步数据至ElasticSearch 为什么使用logstash来同步,CSDN上有一篇文章简要的分析了以下几种同步工具的优缺点:https://blog.csdn.net/laoyang360/article/details/51694519. 下面开始实践: 1. 下载Logstash安装包,需要注意版本与elasticsearch保持一致,windows系统下直接解压即可. 2.添加同步mysql数据库的配置,并将mysql连接驱动jar包放在指定的配置目录 注: 目

OGG 从Oracle备库同步数据至kafka

OGG 从Oracle备库同步数据至kafka Table of Contents 1. 目的 2. 环境及规划 3. 安装配置JDK 3.1. 安装jdk 3.2. 配置环境变量 4. 安装Dataguard 4.1. 安装备库软件 4.2. 配置dataguard 4.2.1. 主库 4.2.2. 备库 4.3. 完成操作 4.4. 启动实时复制 5. zookeeper集群 5.1. 上传并解压 5.2. 配置 5.3. 创建myid文件 5.4. 配置环境变量 5.5. 启动和查看服务

【Spring学习笔记-MVC-4】返回Json数据-方式2

摘要 本文讲解另外一种利用spring MVC返回json数据的方法. 前文回顾 在<[Spring学习笔记-MVC-3]返回Json数据-方式1>中介绍了通过: @ResponseBody声明返回值: 配置<mvc:annotation-driven />: 来返回json数据.效果如下:   ==>, 从上面的效果看,只能返回一个对象,不能返回多个对象,不能做到形如下图的返回结果, 存在局限性(可能可以返回多个,自己不知道如何实现). 下面介绍的方式2,利用spring

winscp以命令行方式同步服务器数据到PC机磁盘上

目前服务器上每日会产生备份文件,需要使用winscp工具把备份同步到本地PC机硬盘上.平时都是图形界面用鼠标点击方式来同步的,效率低下,因此编写了winscp自动同步脚本,并加入到计划任务中定时自动运行. 1.在linux服务器创建备份专用帐号: chattr -i /etc/{passwd,shadow,group,gshadow} useradd bak_user echo '123456789' | passwd --stdin bak_user chattr +i /etc/{passw

mysql定时任务按天建表并跨库同步数据

创建定时任务完成:创建ASR识别记录表,每天自动从小云AI对话详情表同步数据.*/DROP PROCEDURE IF EXISTS `create_o_asr_record_call`;DELIMITER ;;CREATE PROCEDURE `create_o_asr_record_call`(IN `dayInt` bigint,out result int) COMMENT 'ASR识别结果表--按日--建表'BEGIN set @sql_tmp3 = CONCAT('create tab

Spring JdbcTemplate 的使用与学习(转)

Spring JdbcTemplate 的使用与学习 JDBCTemplate 是SPRING 框架自带的一种对sql 语句查询的封装 ,封装非常完善,虽然与Hibernate比起来有一点麻烦,但是学号JDBCTemplate可以让我们用Spirngmvc框架去代替SSH,降低了 我们的学习成本.用起来也更加方便,测试代码如下,包括执行mysql 语句,分页,调用存储过程,返回对象数组,返回整数数组,返回单个对象等 package com.tz.jdbctemplate; import java