java实现mysql同步_Java实现Mysql数据同步

应用场景:

离线应用程序数据同步到服务器端

服务器端数据同步到离线应用程序

同步记录表设计:

类型

不是null

主键

备注

id

int

主键id

start_id

int

被同步表数据,开始id

end_id

int

被同步表数据,结束id

end_upate_time

timestamp

同步结束时的时间(被同步表最后一条同步数据创建时间)

sync_type

varchar

同步类型

create_time

timestamp

创建时间

创建同步记录表sql文件:

CREATE TABLE `sync_record` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',

`start_id` int(11) DEFAULT NULL COMMENT '被同步表数据,开始id',

`end_id` int(11) DEFAULT NULL COMMENT '被同步表数据,结束id',

`end_upate_time` timestamp(4) NULL DEFAULT NULL COMMENT '同步结束时的时间(被同步表最后一条同步数据创建时间)',

`sync_type` varchar(3) DEFAULT NULL COMMENT '同步类型',

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='同步记录表';

本篇博客介绍的是Java程序实现Mysql数据同步,要对抽象类有深刻的理解,不然会对代码逻辑很懵懂,不懂得同学可以看我这篇博客回忆一下Java基础知识:

Java抽象类

编写同步数据逻辑抽象类代码:

根据主键id同步

AbstractSyncByIdService.java(抽象类)

@Service

public abstract class AbstractSyncByIdService {

private static final Logger logger = LoggerFactory.getLogger(AbstractSyncByIdService.class);

@Autowired

private SyncDao syncDao;

/**

* 获取同步的上一个id

*

* @author HeLiu

* @date 2018/7/18 11:20

*/

public Integer queryPreviousId(String syncType) {

return syncDao.queryPreviousId(syncType);

}

/**

* 异常或者结束时,保存或者更新本次的同步记录

*

* @author HeLiu

* @date 2018/7/18 11:39

*/

protected void saveOrUpdateSyncRecord(Integer startId, Integer endId, String syncType) {

boolean exsitFlag = syncDao.queryExsitBySyncType(syncType);

//如果存在该同步类型的 同步记录,则只更新endId ; 不存在,则插入该类型的同步记录

if (exsitFlag) {

syncDao.updateEndIdBySyncType(syncType, endId);

} else {

syncDao.saveSyncRecord(syncType, startId, endId);

}

}

/**

* 执行同步,同步中的业务逻辑,数据之间的同步先后关系,都在这里编写

*

* @a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值