AE86 пре 2 месеци
родитељ
комит
dee73727e0

+ 1 - 0
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/MySQLDateValueMapper.java

@@ -17,6 +17,7 @@ import java.sql.Timestamp;
  * @version 1.0.0
  * @date 2022/8/25 0:07
  */
+@Deprecated
 public final class MySQLDateValueMapper extends AbstractValueMapper<Date> {
 
     @Override

+ 15 - 0
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLDateType.java

@@ -3,6 +3,7 @@
  */
 package org.dbsyncer.connector.mysql.schema.support;
 
+import org.dbsyncer.common.util.StringUtil;
 import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.support.DateType;
 
@@ -32,4 +33,18 @@ public final class MySQLDateType extends DateType {
         return throwUnsupportedException(val, field);
     }
 
+    @Override
+    protected Object convert(Object val, Field field) {
+        // 兼容MySQL年份
+        if (val instanceof Integer) {
+            return val;
+        }
+
+        if (val instanceof String) {
+            if (StringUtil.equals((String) val, "0000-00-00")) {
+                return val;
+            }
+        }
+        return super.convert(val, field);
+    }
 }

+ 10 - 0
dbsyncer-connector/dbsyncer-connector-mysql/src/main/java/org/dbsyncer/connector/mysql/schema/support/MySQLTimestampType.java

@@ -3,6 +3,7 @@
  */
 package org.dbsyncer.connector.mysql.schema.support;
 
+import org.dbsyncer.common.util.StringUtil;
 import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.support.TimestampType;
 
@@ -33,4 +34,13 @@ public final class MySQLTimestampType extends TimestampType {
         return throwUnsupportedException(val, field);
     }
 
+    @Override
+    protected Object convert(Object val, Field field) {
+        if (val instanceof String) {
+            if (StringUtil.equals((String) val, "0000-00-00 00:00:00")) {
+                return val;
+            }
+        }
+        return super.convert(val, field);
+    }
 }

+ 2 - 6
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/DateType.java

@@ -4,7 +4,6 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.common.util.DateFormatUtil;
-import org.dbsyncer.common.util.StringUtil;
 import org.dbsyncer.sdk.enums.DataTypeEnum;
 import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
@@ -26,7 +25,7 @@ public abstract class DateType extends AbstractDataType<Date> {
     }
 
     @Override
-    public Object convert(Object val, Field field) {
+    protected Object convert(Object val, Field field) {
         if (val instanceof Date) {
             return val;
         }
@@ -43,9 +42,6 @@ public abstract class DateType extends AbstractDataType<Date> {
 
         if (val instanceof String) {
             String s = (String) val;
-            if (StringUtil.equals(s, "0000-00-00")) {
-                return s;
-            }
             Timestamp timestamp = DateFormatUtil.stringToTimestamp(s);
             if (null != timestamp) {
                 return Date.valueOf(timestamp.toLocalDateTime().toLocalDate());
@@ -53,4 +49,4 @@ public abstract class DateType extends AbstractDataType<Date> {
         }
         return throwUnsupportedException(val, field);
     }
-}
+}

+ 3 - 4
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/StringType.java

@@ -12,7 +12,6 @@ import java.sql.Date;
 import java.sql.Timestamp;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 
 /**
  * @Author 穿云
@@ -41,11 +40,11 @@ public abstract class StringType extends AbstractDataType<String> {
         }
 
         if (val instanceof LocalDateTime) {
-            return ((LocalDateTime) val).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+            return ((LocalDateTime) val).format(DateFormatUtil.CHINESE_STANDARD_TIME_FORMATTER);
         }
 
         if (val instanceof LocalDate) {
-            return ((LocalDate) val).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            return ((LocalDate) val).format(DateFormatUtil.DATE_FORMATTER);
         }
 
         if (val instanceof Timestamp) {
@@ -62,4 +61,4 @@ public abstract class StringType extends AbstractDataType<String> {
 
         return throwUnsupportedException(val, field);
     }
-}
+}

+ 1 - 5
dbsyncer-sdk/src/main/java/org/dbsyncer/sdk/schema/support/TimestampType.java

@@ -4,7 +4,6 @@
 package org.dbsyncer.sdk.schema.support;
 
 import org.dbsyncer.common.util.DateFormatUtil;
-import org.dbsyncer.common.util.StringUtil;
 import org.dbsyncer.sdk.enums.DataTypeEnum;
 import org.dbsyncer.sdk.model.Field;
 import org.dbsyncer.sdk.schema.AbstractDataType;
@@ -32,9 +31,6 @@ public abstract class TimestampType extends AbstractDataType<Timestamp> {
             return val;
         }
         if (val instanceof String) {
-            if (StringUtil.equals((CharSequence) val, "0000-00-00 00:00:00")) {
-                return val;
-            }
             Timestamp timestamp = DateFormatUtil.stringToTimestamp((String) val);
             if (null != timestamp) {
                 return timestamp;
@@ -71,4 +67,4 @@ public abstract class TimestampType extends AbstractDataType<Timestamp> {
         return throwUnsupportedException(val, field);
     }
 
-}
+}