Browse Source

自定义注解,判定更新字段

sbj 1 year ago
parent
commit
bf74414848

+ 14 - 0
src/main/java/com/zoro/mutiDb/annotation/NeedEquality.java

@@ -0,0 +1,14 @@
+package com.zoro.mutiDb.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @author Administrator
+ */
+@Target({ElementType.METHOD,ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface NeedEquality {
+}

+ 17 - 0
src/main/java/com/zoro/mutiDb/entity/Test.java

@@ -0,0 +1,17 @@
+package com.zoro.mutiDb.entity;
+
+import com.zoro.mutiDb.annotation.NeedEquality;
+import lombok.Data;
+
+/**
+ * @ClassName: Test
+ *
+ * @description: TODO
+ * @author: zhf
+ * @time: 2023/12/4 16:20 @Version: 1.0
+ */
+@Data
+public class Test {
+  @NeedEquality
+  private String name;
+}

+ 37 - 0
src/main/java/com/zoro/mutiDb/util/BeanCompare.java

@@ -0,0 +1,37 @@
+package com.zoro.mutiDb.util;
+
+import java.lang.reflect.Field;
+
+/**
+ * @ClassName: BeanCompare
+ * @description: TODO
+ * @author: zhf
+ * @time: 2023/12/4 16:09
+ * @Version: 1.0
+ */
+public class BeanCompare {
+  public static boolean compareBean(Class<?> classA, Class<?> classB) {
+      return classA == classB || classA != null && classA.equals(classB);
+  }
+
+  public  static String compareBeanDifferent(Class<?> classA, Class<?> classB)
+      throws IllegalAccessException {
+    StringBuilder diff = new StringBuilder();
+    Field[] fields = classA.getDeclaredFields();
+    for (Field field : fields) {
+      field.setAccessible(true);
+      Object a = field.get(classA);
+      Object b = field.get(classB);
+      if (!a.equals(b)){
+        diff.append("\t")
+            .append(field.getName())
+            .append(": ")
+            .append(a)
+            .append(", ")
+            .append(b)
+            .append('\n');
+      }
+    }
+    return diff.toString();
+  }
+}

+ 1 - 1
src/main/resources/mapper/TestMapper.xml

@@ -3,6 +3,6 @@
   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zoro.mutiDb.mapper.TestMapper">
   <select id="getOne" resultType="java.lang.String">
-        select cbzlzwmc from bayonet_basics.zd_cbzl where cbzldm = '0413'
+        select cbzlzwmc name from bayonet_basics.zd_cbzl where cbzldm = '0413'
   </select>
 </mapper>