`

两个不同系统之间数据同步

阅读更多

PS:走着走着忘记了自己做了什么,有时间就就记录下自己的脚印。。。。。。。  涛声一笑

场景:这几天在做前后台数据同步时,遇到这种情况,前台系统的数据表结构与后台的数据表结构不相同,但前台只需要后台表中某些数据的字段,以下记录下自己处理的原理过程。

技术支持:mybatis、JPA、spring工具类BeanUtils

首先双方约定好,前台定义接口以及实现,后台通过前台提供的接口包传输数据。

1、后台系统对应表结构的实体类

 

public class Person {
    private Integer userId;
    private String userName;
    private Integer userAge;
    private String address;
    
    public Integer getUserId() {
           return userId;
    }
    public void setUserId(Integer userId) {
	this.userId = userId;
    }
    public String getUserName() {
	return userName;
    }
    public void setUserName(String userName) {
	this.userName = userName;
     }
......
}

2、前台系统对应表结构的实体类

 

 

public class Person{    
    private Integer id;
    private String name;
    private Integer age;
    private String  sno;
    。。。。。。

 3、通过对比1、2,前台与后台的JavaBean属性字段不相同,假设前台需要同步后台Person中的userId(id),userName(name),userAge(age)属性。

 

4、将后台的JavaBean拷贝到前台工程中,保留前台需要字段

 

public class Person4Backstage{
    private Integer userId;
    private String userName;
    private Integer userAge;
    
    public Integer getUserId() {
           return userId;
    }
    public void setUserId(Integer userId) {
	this.userId = userId;
    }
    public String getUserName() {
	return userName;
    }
    public void setUserName(String userName) {
	this.userName = userName;
     }
    public String getUserAge(){
        return userAge;
   }
   public void setUserAge(){
      this.userAge = userAge;
  }
}

 5、由于后台的JavaBean与前台JavaBean对应的属性名不一致,因此通过JPA将Person4Backstage中的属性与前台表中字段属性保持一致

 

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "person")
public class Person4Person4Backstage implements Serializable{
	
   
    private static final long serialVersionUID = 1L;

    private Integer userId;

    private String userName;

    private Integer userAge;

    @Column(name="id")
	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	@Column(name="name")
	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	@Column(name="age")
	public Integer getUserAge() {
		return userAge;
	}

	public void setUserAge(Integer userAge) {
		this.userAge = userAge;
	}
    
}

 6、在pom.xml文件加入对应jar依赖配置文件

 

 

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency>

 7、在PersonMapper.xml加入以下配置

 

 

<update id="updatePerson4Backstage" parameterType="com.zlt.pojo.Person4Backstage">
    update person
    <set>
      <if test="userName != null">
        name = #{userName,jdbcType=VARCHAR},
      </if>
      <if test="userAge != null">
        age = #{userAge,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{userId,jdbcType=INTEGER}
  </update>

 8、在PersonMapper接口中加入以下方法:

 

 

 int updatePerson4Backstage(Person4Backstage person);

 9、在PersonService接口中加入以下方法:

 

 

 int updatePerson4Backstage(Person person);注此参数Person是后台JavaBean Person

 10、在PersonServiceImpl中实现:

public int updatePerson4Backstage(Person person){
		 int count = 0;
		 Person4Backstage obj = new Person4Backstage();
		 BeanUtils.copyProperties(person, obj);//将后台传过来的属性通过copyProperties方法,实现属性拷贝,属性不一样不会拷贝
		 count = personMapper.updatePerson4Backstage(obj);
		 return count;
	 }

 以上简单记录下,自己处理过程,如有不够全,请多多指教!

 

 

 

 

 

分享到:
评论

相关推荐

    java实现两个mysql同步主库的数据

    两个mysql数据库之间实现同步,通过定时任务实现从主库到从库的同步,java代码实现,所有java项目包括配置都有,数据结构可以跟据自己的特定情况去改

    Java数据库同步系统(Web平台)

    同步不同数据库之间的数据,比如postgresql到oracle,oracle到oracle,不限于此,支持自己配置。 实现思路: 在主线程中创建若干子线程,每个子线程分别用来同步一张数据表,提供web页面,监控各个子线程运行状况,...

    如何在两台MySQL数据库间实现同步

    做开发的时候要做MySQL的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,MySQL的版本是4.1.15,都是目前最新的版本。本文将为大家介绍如何在两台MySQL数据库间实现同步。

    实现淘宝店铺与店铺之间的库存同步

    淘宝店铺与店铺之间库存同步软件,特别适合多个淘宝C店的卖家。同时也适合单店的库存管理更新,提供批量导入库存功能(支持全量更新库存及增量更新库存)。 主要功能如下: 1.支持库存为主店为准,多个分店同步主店...

    JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库

    用java中的线程控制程序从一个数据库中定时自动抽取数据到另一个数据库,实现数据库的同步。代码很详细。

    Linux系统编程之线程同步

    如,设备同步,是指在两个设备之间规定一个共同的时间参考;数据库同步,是指让两个或多个数据库内容保持一致,或者按需要部分保持一致;文件同步,是指让两个或多个文件夹里的文件保持一致。等等 而,编程中、通信...

    同步关键的分布式系统时ADC架构可避免中断的数据流

    本文介绍了基于SAR ADC的系统和基于sigma-delta (∑-Δ) ADC的分布式数据采集系统同步的传统方法,且探讨了这两种架构之间的区别。我们还将讨论同步多个Σ-Δ ADC时遇到的典型不便。最后,提出一种基于AD7770采样...

    操作系统上机实验报告 进程同步和通信-生产者和消费者问题模拟

     本程序是模拟两个进程,生产者(producer)和消费者(Consumer)工作。生产者每次产生一个数据,送入缓冲区中。消费者每次从缓冲区中取走一个数据。缓冲区可以容纳8个数据。因为缓冲区是有限的,因此当其满了时生产...

    大数据研发引擎,用可视化的组件编排后台数据处理逻辑项目源代码

     数据同步:是指保持两个或者多个业务系统之间共享数据的一致性和完整性。  数据集成:是指将不同业务系统中的数据经过清洗、整理后汇总到一个数据中心,这样以便于数据共享、分析、挖掘。 本平台把各种纷繁复杂...

    1操作系统实验五.docx

    由生产者进程发送数值1~10到由5个缓冲区组成的共享内存中,两个消费者进程轮流接受并输入这10个数据,同时将两个消费者进程对读出的所有数据进行累加求和。 3个子进程结束后,由父进程输出两个消费者进程所读出数据...

    最好的数据同步软件allway sync 11.4完美特别版版

    可以对两个以上的目录进行同步; 可以对不在同一个局域网内的电脑或笔记本进行同步; 对于多个目录(多个任务)可以单独设定同步参数; 可以使用移动设备作为中介在电脑之间传输文件; 可以与移动设备进行同步...

    帧同步系统的工作原理及如何基于FPGA实现其设计

    另一类则不需要加入码组,而是利用数据码组本身之间彼此不同的特性实现同步。这里采取种方法——连贯式插人法实现帧同步。所谓连贯式插入法就是在每帧开头插入帧同步码。所用的帧同步码为巴克码,巴克码是一种具有...

    基于Raspberry+Pi的数据采集系统的研究与实现

    与数据处理速度不匹配的两个模块之间,来实现数据采集系统的数据同步过程。 然后,根据采集数据的特点,本课题使用FFT(Fast Fourier Transform)算法进行 数据处理,优化数据处理过程并充分利用Raspberry Pi较强的...

    帧同步系统的FPGA设计与实现

    另一类则不需要加入码组,而是利用数据码组本身之间彼此不同的特性实现同步。这里采取种方法——连贯式插人法实现帧同步。所谓连贯式插入法就是在每帧开头插入帧同步码。所用的帧同步码为巴克码,巴克码是一种具有...

    嵌入式系统/ARM技术中的计算机操作系统进程(线程)的同步与通信

    例如,有进程A和进程B两个进程,它们需要通过访问同一个数据缓冲区合作完成一项工作,进程A负责向缓冲区写入数据,进程B负责从缓 冲区读取该数据。显然,当进程A还未向缓冲区写入数据时(缓冲区为空时),进程B因不...

    FoolSync实时同步热备份软件

    •数据库同步:用于两个数据库之间数据实时同步热备份。 •数据库监视:可用于特定数据库的监视。 •数据库复制:复制表,视图,存储过程以及函数等。 •支持多任务:文件和数据库同步都支持多任务。 运行环境: ...

    文件同步软件

    支持多种文件系统,而且提供了多种语系以供不同国家和地区的用户。 【支持传输平台】  1、两台电脑之间!  2、GoodSync Connect用户之间!  3、Windows共享数据!  4、远程FTP服务器!  5、WebDAV!  6、...

    阿里巴巴大数据之路——数据技术篇.pdf

    产品——阿⾥DataX:多⽅向⾼⾃由度异构数据交换服务产品,产品解决的主要问题:实现跨平台的、跨数据库、不同系统之间的数据同步及交互。 产品简介: 开源地址: 更多的介绍将会通过新开随笔进⾏介绍!(当然还有...

    Linux下rsync远程数据同步命令的详细介绍

    rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项...

Global site tag (gtag.js) - Google Analytics