Java之——基於java開發的功能強大、配置靈活的資料庫之間的同步工具
一、專案背景
基於java開發的功能強大、配置靈活的資料庫之間的同步工具,和資料產生器一樣,均是前段時間因為專案需要編寫的小工具,在實際應用場景中,我們經常需要定期將一個數據庫的資料同步到另外一個數據庫中,常見的一種做法是將源資料庫的資料dump為sql檔案,然後到目標資料庫執行sql檔案完成資料庫的匯入,但是這種方法至少存在以下問題:
- 需要手工操作,效率低
- 當涉及資料表較多時,容易遺漏、出錯
- 如果要定期同步,操作人容易忘記
- 難以應付頻繁變更資料表或者欄位
針對以上存在的問題,將珍貴人力從這種重複、無意義的工作中解脫出來,特意開發這個小工具,其中主要配置主要在jobs.xml中完成。
二、專案結構
專案整體結構如下圖:
三、專案功能
- MySQL——>MySQL
- SQLServer——>SQLServer
- MySQL——>SQLServer
- SQLServer——>MySQL
注:——>左邊的程式碼源資料庫,——>右邊代表的是目標資料庫,具體解釋如下:
- 支援MySQL向MySQL同步資料
- 支援SQLServer向SQLServer同步資料
- 支援MySQL向SQLServer同步資料
- 支援SQLServer向MySQL同步資料
四、具體功能實現
1、建立資料庫資訊類DBInfo
這個類主要是儲存一些資料庫相關的資訊,比如資料庫驅動、資料庫連線、使用者名稱和密碼等,具體見如下程式碼:
- package io.mykit.db.sync.provider.entity;
- /**
- * 資料庫資訊
- * @author liuyazhuang
- *
- */
- publicclass DBInfo {
- //資料庫連線
- private String url;
- //資料庫使用者名稱
- private String username;
- //資料庫密碼
- private String password;
- //資料庫型別(對應mysql還是sqlserver)
- private String dbtype;
- //資料庫驅動
- private String driver;
- public String getUrl() {
- return url;
- }
- publicvoid setUrl(String url) {
- this.url = url;
- }
- public String getUsername() {
- return username;
- }
- publicvoid setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- publicvoid setPassword(String password) {
- this.password = password;
- }
- public String getDbtype() {
- return dbtype;
- }
- publicvoid setDbtype(String dbtype) {
- this.dbtype = dbtype;
- }
- public String getDriver() {
- return driver;
- }
- publicvoid setDriver(String driver) {
- this.driver = driver;
- }
- }
2、建立定時同步任務資訊類JobInfo
這個類主要是儲存一些與定時任務相關的基本資訊,具體見如下程式碼:
- package io.mykit.db.sync.provider.entity;
- /**
- * 任務資訊
- * @author liuyazhuang
- *
- */
- publicclass JobInfo {
- //任務名稱
- private String name;
- //任務表示式
- private String cron;
- //源資料來源sql
- private String srcSql;
- //目標資料表
- private String destTable;
- //目標表資料欄位
- private String destTableFields;
- //目標表主鍵
- private String destTableKey;
- //目標表可更新的欄位
- private String destTableUpdate;
- public String getName() {
- return name;
- }
- publicvoid setName(String name) {
- this.name = name;
- }
- public String getCron() {
- return cron;
- }
- publicvoid setCron(String cron) {
- this.cron = cron;
- }
- public String getSrcSql() {
- return srcSql;
- }
- publicvoid setSrcSql(String srcSql) {
- this.srcSql = srcSql;
- }
- public String getDestTable() {
- return destTable;
- }
- publicvoid setDestTable(String destTable) {
- this.destTable = destTable;
- }
- public String getDestTableFields() {
- return destTableFields;
- }
- publicvoid setDestTableFields(String destTableFields) {
- this.destTableFields = destTableFields;
- }
- public String getDestTableKey() {
- return destTableKey;
- }
- publicvoid setDestTableKey(String destTableKey) {
- this.destTableKey = destTableKey;
- }
- public String getDestTableUpdate() {
- return destTableUpdate;
- }
- publicvoid setDestTableUpdate(String destTableUpdate) {
- this.destTableUpdate = destTableUpdate;
- }
- }
3、建立字串工具類SpringUtils
這個類主要是為字串的操作提供統一的工具支援,在這個小工具中,本類主要的作用就是判斷給定的字串是否為空,具體見如下程式碼:
-
相關推薦
Java之——基於java開發的功能強大、配置靈活的資料庫之間的同步工具
一、專案背景基於java開發的功能強大、配置靈活的資料庫之間的同步工具,和資料產生器一樣,均是前段時間因為專案需要編寫的小工具,在實際應用場景中,我們經常需要定期將一個數據庫的資料同步到另外一個數據庫中,常見的一種做法是將源資料庫的資料dump為sql檔案,然後到目標資料庫執
Corba開發之基於Java實現Service與Client
1 概述 CORBA(Common Object Request Broker Architecture,公共物件請求代理體系結構)是由OMG組織制訂的一種標準的面向物件應用程 序體系規範。或者說 CORBA體系結構是OMG為解決分散式處理環境(DCE)中,硬
四:Java之字符串操作String、StringBuffer和StringBuilder
equal const wstring str asi 有時 string對象 階段 stringbu string是我們經經常使用到的一個類型,事實上有時候認為敲代碼就是在重復的操作字符串,這是C的特點,在java中。jdk非常好的封裝了關於字符串的操
Appium移動自動化測試之—基於java的iOS環境搭建
res .sh 變更 order edev curl 軟件包 comm 簡單的 本文僅供參考,同時感謝幫助我搭建環境的同事 操作系統的名稱:Mac OS X操作系統的版本:10.12.6 接下來我們開始踏上搭建Appium+java+ios之路,本文只說個大概,畢竟本機已經
java之sleep(),join(),yield(),wait(),notify()、notifyAll()區別
zed lang object 數據 不能訪問 tar 值類型 類型 except 1、sleep() 使當前線程(即調用該方法的線程)暫停執行一段時間,讓其他線程有機會繼續執行,但它並不釋放對象鎖。也就是說如果有synchronized同步快,其他線程仍然不能訪問共享數據
Spring(八)之基於Java配置
onf 需要 rgs ava poi .com class 解釋 mes 基於 Java 的配置 到目前為止,你已經看到如何使用 XML 配置文件來配置 Spring bean。如果你熟悉使用 XML 配置,那麽我會說,不需要再學習如何進行基於 Java 的配置是,因為你要
Java之三大基礎排序(冒泡、選擇、插入)
注:以下排序均為從小到大 一、氣泡排序 package com.yunche.testsort; import java.util.Arrays; /** * @ClassName: BubbleSort * @Description: * @author: yunche
Java之路:類的封裝、繼承與多型
面向物件有三大特點:封裝性、繼承性和多型性。 一、封裝 1、封裝的含義 封裝 (Encapsulation)是將描述某類事物的資料與處理這些資料的函式封裝在一起,形成一個有機整體,稱為類。 類所具有的封裝性可使程式模組具有良好的獨立性與可維護性,這對大型程式的開發是特別重要的
Java之四大內建註解@Override、@Deprecated、@SuppressWarnings、@SafeVarargs
Java中的四大內建註解: ==> 標記程式 給予特殊意義 1.@Override : 驗證方法是否在覆寫 2.@Deprecated : 標記方法、類...等是否過時
java之微信開發回覆圖片訊息
微信開發文件見:詳見 具體實現見:詳見 public class WxController { public static final Logger LOGGER= LoggerFactory.getLogger(WxController.
JAVA之各種排序演算法(冒泡、選擇、快排、二分法詳細過程)
掌握演算法是作為程式設計師的基本必備素質,而排序也是各種演算法的基礎,雖說java幫我們封裝好了各種資料型別的排序方法,可是我們還是要知道他的原理,下面我就說幾種常用的演算法及原理; 氣泡排序: 原理:相鄰元素兩兩比較,大的往後放,每一次完畢,最大值出現在了最大索引處; 下面我們
Java 之路 (十三) -- 字串(String、正則表示式)
個人吐槽:對於這章,第一遍讀和重讀之後果然看法不同:第一次讀時覺得,文章用了大篇幅來介紹 API,這樣我可以比較容易理解這個方法是幹嘛的,以此理解這個類是幹嘛的;但是重讀之後覺得,文章居然用了這麼大篇幅在講 API(尤其是正則表示式),如果我需要知道具體某
從零配置雲伺服器(Java web執行環境)(二、配置JAVA開發環境)
二、配置JAVA開發環境 先進入我們的實力列表,右邊進入遠端連線。 這裡遠端連線1 輸入遠端連線密碼後連線成功,接著輸入系統登陸賬號密碼。(Unix系統輸入密碼都是不顯示在螢幕上的,是連小星星都沒有的。) 登陸成功後我們先新建一個目錄
Java之基於Eclipse搭建SSH框架(下)
在上篇部落格裡,我簡單介紹了Tomcat滴配置與Struts2滴搭建,如果對這個還不會滴童鞋去看一下我滴上篇部落格《Java之基於Eclipse搭建SSH框架(上)》。今天我們接著上篇部落格滴內容,繼續搭建我們滴SSH框架。 (一)在上篇部落格滴基礎上整合Sp
Java之——基於Luhn演算法的銀行卡卡號的格式校驗
一、檢驗規則 Luhn演算法被用於最後一位為校驗碼的一串數字的校驗,通過如下規則計算校驗碼的正確性: 按照從右往左的順序,從這串數字的右邊開始,包含校驗碼,將偶數位數字乘以2,如果每次乘二操作的結果大於9(如 8 × 2 = 16),然後計算個位和十位數字的和(如
java之接口開發-初級篇-http和https
tps str java之接口 url地址 head http 初級 type charset http協議util address(url地址),str(數據參數) private static HttpMethod getPostJsonMethodInReques
Spring MVC之基於java config無xml配置的web應用構建
開發十年,就只剩下這套架構體系了! >>>
Java之~ 上傳 圖片壓縮,圖片壓縮,圖片旋轉方法工具類
package com.javajy.util; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import jav
Spring Cloud之Gateway(四):TLS/SSL、配置、跨域訪問配置、執行器API、開發人員指南及MVC或Webflux搭建Gateway
版本:2.0.2.RELEASE 連結:http://spring.io/projects/spring-cloud-gateway#overview 本章主要目錄如下: Spring Cloud GatewayTLS/SSL是什麼? Spring Cloud
java之對JDBC的完整封裝(相容多種資料庫)
目前此程式碼我只用過mysql和oracle資料庫測試過,但相信其它資料庫都是可以的,只要匯入你需要操作的資料庫jar包,驅動等就可,下面上程式碼: import java.sql.CallableStatement; import java.sql.Connection