diff --git a/README.md b/README.md
index 7612d044ade88ea1cfcd1238ca957638f04e0f6c..9399edf2b2ef384485c96faafdb733f30a57a74d 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ RdbmsSyncTool是使用javaFx开发的关系型数据库同步工具,完成关
**xJavaFxTool交流QQ群:== [387473650(此群已满)](https://jq.qq.com/?_wv=1027&k=59UDEAD) 请加群②[1104780992](https://jq.qq.com/?_wv=1027&k=bhAdkju9) ==**
#### 环境搭建说明:
-- 开发环境为jdk1.8,基于maven构建
+- 开发环境为jdk17,基于maven构建
- 使用eclipase或Intellij Idea开发(推荐使用[Intellij Idea](https://www.jetbrains.com/?from=xJavaFxTool))
- 该项目为javaFx开发的实用小工具集[xJavaFxTool](https://gitee.com/xwintop/xJavaFxTool)的插件。
- 本项目使用了[lombok](https://projectlombok.org/),在查看本项目时如果您没有下载lombok 插件,请先安装,不然找不到get/set等方法
diff --git a/pom.xml b/pom.xml
index 9abe6fbfa71e1e7a874dd06a1f6f5b168e670fd1..ae00797b533c888c7921dbad837302772dd39f1d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,19 +19,8 @@
http://maven.aliyun.com/nexus/content/groups/public/
- xwintop-maven
- https://xwintop.gitee.io/maven/repository
-
-
- spring-snapshots
- http://repo.spring.io/snapshot
-
- true
-
-
-
- spring-milestones
- http://repo.spring.io/milestone
+ jitpack.io
+ https://jitpack.io
@@ -43,37 +32,37 @@
test
- com.xwintop
+ com.gitee.xwintop
xcore
- 0.0.6
+ 0.0.7
org.projectlombok
lombok
- 1.18.6
+ 1.18.22
provided
com.alibaba
druid
- 1.1.24
+ 1.2.10
mysql
mysql-connector-java
- 5.1.48
+ 5.1.49
- cn.easyproject
- ojdbc7
- 12.1.0.2.0
+ com.oracle.database.jdbc
+ ojdbc8
+ 19.8.0.0
@@ -91,7 +80,7 @@
org.postgresql
postgresql
- 42.2.12
+ 42.2.24
diff --git a/src/main/java/com/xwintop/xJavaFxTool/RdbmsSyncToolApplication.java b/src/main/java/com/xwintop/xJavaFxTool/RdbmsSyncToolApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd1875a4ce9f9cce89d41e0217b150a6c2731112
--- /dev/null
+++ b/src/main/java/com/xwintop/xJavaFxTool/RdbmsSyncToolApplication.java
@@ -0,0 +1,43 @@
+package com.xwintop.xJavaFxTool;
+
+import com.xwintop.xcore.util.javafx.JavaFxSystemUtil;
+import javafx.application.Application;
+import javafx.event.EventHandler;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+import javafx.stage.WindowEvent;
+import lombok.extern.slf4j.Slf4j;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+
+@Slf4j
+public class RdbmsSyncToolApplication extends Application {
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ double[] screenSize = JavaFxSystemUtil.getScreenSizeByScale(0.74, 0.8);
+ FXMLLoader fXMLLoader = RdbmsSyncToolApplication.getFXMLLoader();
+ ResourceBundle resourceBundle = fXMLLoader.getResources();
+ Parent root = fXMLLoader.load();
+ primaryStage.setResizable(true);
+ primaryStage.setTitle(resourceBundle.getString("Title"));
+// primaryStage.getIcons().add(new Image("/images/icon.jpg"));
+ primaryStage.setScene(new Scene(root, screenSize[0], screenSize[1]));
+ primaryStage.show();
+ primaryStage.setOnCloseRequest(new EventHandler() {
+ @Override
+ public void handle(WindowEvent event) {
+ System.exit(0);
+ }
+ });
+ }
+
+ public static FXMLLoader getFXMLLoader() {
+ ResourceBundle resourceBundle = ResourceBundle.getBundle("locale.RdbmsSyncTool");
+ URL url = RdbmsSyncToolApplication.class.getResource("/com/xwintop/xJavaFxTool/fxmlView/debugTools/RdbmsSyncTool.fxml");
+ FXMLLoader fXMLLoader = new FXMLLoader(url, resourceBundle);
+ return fXMLLoader;
+ }
+}
diff --git a/src/main/java/com/xwintop/xJavaFxTool/RdbmsSyncToolMain.java b/src/main/java/com/xwintop/xJavaFxTool/RdbmsSyncToolMain.java
index 50a18edde7d5c015a7b0b310611679efa1a91883..e9f2346518ad9b0cf389bd1b63c4c9389fb3cbdb 100644
--- a/src/main/java/com/xwintop/xJavaFxTool/RdbmsSyncToolMain.java
+++ b/src/main/java/com/xwintop/xJavaFxTool/RdbmsSyncToolMain.java
@@ -1,51 +1,15 @@
package com.xwintop.xJavaFxTool;
-import com.xwintop.xcore.util.javafx.JavaFxSystemUtil;
import javafx.application.Application;
-import javafx.event.EventHandler;
-import javafx.fxml.FXMLLoader;
-import javafx.scene.Parent;
-import javafx.scene.Scene;
-import javafx.stage.Stage;
-import javafx.stage.WindowEvent;
import lombok.extern.slf4j.Slf4j;
-import java.net.URL;
-import java.util.ResourceBundle;
-
@Slf4j
-public class RdbmsSyncToolMain extends Application {
+public class RdbmsSyncToolMain {
public static void main(String[] args) {
try {
- launch(args);
+ Application.launch(RdbmsSyncToolApplication.class, args);
} catch (Exception e) {
e.printStackTrace();
}
}
-
- @Override
- public void start(Stage primaryStage) throws Exception {
- double[] screenSize = JavaFxSystemUtil.getScreenSizeByScale(0.74, 0.8);
- FXMLLoader fXMLLoader = RdbmsSyncToolMain.getFXMLLoader();
- ResourceBundle resourceBundle = fXMLLoader.getResources();
- Parent root = fXMLLoader.load();
- primaryStage.setResizable(true);
- primaryStage.setTitle(resourceBundle.getString("Title"));
-// primaryStage.getIcons().add(new Image("/images/icon.jpg"));
- primaryStage.setScene(new Scene(root, screenSize[0], screenSize[1]));
- primaryStage.show();
- primaryStage.setOnCloseRequest(new EventHandler() {
- @Override
- public void handle(WindowEvent event) {
- System.exit(0);
- }
- });
- }
-
- public static FXMLLoader getFXMLLoader() {
- ResourceBundle resourceBundle = ResourceBundle.getBundle("locale.RdbmsSyncTool");
- URL url = Object.class.getResource("/com/xwintop/xJavaFxTool/fxmlView/debugTools/RdbmsSyncTool.fxml");
- FXMLLoader fXMLLoader = new FXMLLoader(url, resourceBundle);
- return fXMLLoader;
- }
}
diff --git a/src/main/java/com/xwintop/xJavaFxTool/services/debugTools/RdbmsSyncToolService.java b/src/main/java/com/xwintop/xJavaFxTool/services/debugTools/RdbmsSyncToolService.java
index b175f73b100d3f23efc6e5d206f4fe64fd720f41..2c85438ad9c2b2faebfec43a1dec4548730dcf6e 100644
--- a/src/main/java/com/xwintop/xJavaFxTool/services/debugTools/RdbmsSyncToolService.java
+++ b/src/main/java/com/xwintop/xJavaFxTool/services/debugTools/RdbmsSyncToolService.java
@@ -5,6 +5,7 @@ import cn.hutool.db.meta.Column;
import cn.hutool.db.meta.MetaUtil;
import cn.hutool.db.meta.Table;
import cn.hutool.db.meta.TableType;
+import com.alibaba.druid.DbType;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.util.JdbcUtils;
import com.xwintop.xJavaFxTool.controller.debugTools.RdbmsSyncToolController;
@@ -71,7 +72,7 @@ public class RdbmsSyncToolService {
}
Connection connection = dataSource.getConnection();
try {
- tableNames = JdbcUtils.showTables(connection, dbType);
+ tableNames = JdbcUtils.showTables(connection, DbType.of(dbType));
} finally {
JdbcUtils.close(connection);
}
@@ -369,6 +370,18 @@ public class RdbmsSyncToolService {
for (int i = 0; i < columnList2.length; i++) {
dataObjects[i] = rs.getObject(i + 1);
switch (rsMetaData.getColumnType(i + 1)) {
+ case Types.CHAR:
+ case Types.NCHAR:
+ case Types.VARCHAR:
+ case Types.LONGVARCHAR:
+ case Types.NVARCHAR:
+ case Types.LONGNVARCHAR:
+ dataObjects[i] = rs.getString(i + 1);
+ break;
+ case Types.CLOB:
+ case Types.NCLOB:
+ dataObjects[i] = rs.getString(i + 1);
+ break;
case Types.TIME:
dataObjects[i] = rs.getTime(i + 1);
break;
@@ -382,6 +395,13 @@ public class RdbmsSyncToolService {
case Types.TIMESTAMP:
dataObjects[i] = rs.getTimestamp(i + 1);
break;
+ case Types.BINARY:
+ case Types.VARBINARY:
+ case Types.BLOB:
+ case Types.LONGVARBINARY:
+ byte[] value = rs.getBytes(i + 1);
+ dataObjects[i] = value == null ? null : new String(value);
+ break;
default:
dataObjects[i] = rs.getObject(i + 1);
}
diff --git a/src/main/java/com/xwintop/xJavaFxTool/tools/SqlUtil.java b/src/main/java/com/xwintop/xJavaFxTool/tools/SqlUtil.java
index da76c37f657e1919e8c7d3f4865a1bf175a5a33f..21ecc4385347394ec39b9e5c225b2b9c21a4bfe6 100644
--- a/src/main/java/com/xwintop/xJavaFxTool/tools/SqlUtil.java
+++ b/src/main/java/com/xwintop/xJavaFxTool/tools/SqlUtil.java
@@ -211,7 +211,7 @@ public class SqlUtil {
if ("sqlserver".equalsIgnoreCase(DB_TYPE)) {
stringBuffer.append(" > CONVERT(datetime,'" + DateFormatUtils.format(lastSyncTime, "yyyy-MM-dd HH:mm:ss.SSS") + "',21) and ");
stringBuffer.append(filterTimeColumn).append(" <= CONVERT(datetime,'" + DateFormatUtils.format(maxLastupdate, "yyyy-MM-dd HH:mm:ss.SSS") + "',21)");
- } else if ("oracle".equalsIgnoreCase(DB_TYPE)) {
+ } else if ("oracle".equalsIgnoreCase(DB_TYPE) || "dm".equalsIgnoreCase(DB_TYPE)) {
stringBuffer.append(" > TO_TIMESTAMP('" + DateFormatUtils.format(lastSyncTime, "yyyy-MM-dd-HH:mm:ss") + String.format(".%09d", lastSyncTime.getNanos()) + "','yyyy-MM-dd-hh24:mi:ss.ff9') and ");
stringBuffer.append(filterTimeColumn).append(" <= TO_TIMESTAMP('" + DateFormatUtils.format(maxLastupdate, "yyyy-MM-dd-HH:mm:ss") + String.format(".%09d", maxLastupdate.getNanos()) + "','yyyy-MM-dd-hh24:mi:ss.ff9')");
} else if ("mysql".equalsIgnoreCase(DB_TYPE)) {