From 145a6efab30d7a0acb76eee6cd512eba93665efe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 05 十二月 2020 17:19:40 +0800
Subject: [PATCH] 大淘客编码问题解决,mybatis优化

---
 utils/src/main/java/org/yeshi/utils/mongo/MongoDaoUtil.java |   28 +++++++++++++++++++++-------
 1 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/utils/src/main/java/org/yeshi/utils/mongo/MongoDaoUtil.java b/utils/src/main/java/org/yeshi/utils/mongo/MongoDaoUtil.java
index 2ed117c..1b0c56c 100644
--- a/utils/src/main/java/org/yeshi/utils/mongo/MongoDaoUtil.java
+++ b/utils/src/main/java/org/yeshi/utils/mongo/MongoDaoUtil.java
@@ -1,6 +1,8 @@
 package org.yeshi.utils.mongo;
 
 import org.springframework.data.annotation.Transient;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.Update;
 import org.yeshi.utils.entity.wx.WXAPPInfo;
 
@@ -41,19 +43,31 @@
         List<Field> fields = getValidField(clz);
         StringBuilder builder = new StringBuilder();
 
-        builder.append(String.format("void updateSelective(%s bean){\r\n", clz.getSimpleName()));
+        builder.append(String.format("public void updateSelective(%s bean) {\r\n", clz.getSimpleName()));
 
-        builder.append("    Update update=new Update();\r\n");
+        builder.append("    Query query = new Query();\r\n");
+        builder.append("    query.addCriteria(Criteria.where(\"id\").is(bean.getId()));\r\n");
+
+        builder.append("    Update update = new Update();\r\n");
         for (Field f : fields) {
+            if ("id".equalsIgnoreCase(f.getName()) || "createTime".equalsIgnoreCase(f.getName()))
+                continue;
+
+            if (f.getModifiers() == 25) {//public final static淇グ
+                continue;
+            }
             String getMethod = String.format("bean.get%s()", f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1));
-            builder.append(String.format("  if(%s!=null){\r\n", getMethod));
-            builder.append(String.format("      update.set(\"%s\",%s)\r\n", f.getName(), getMethod));
-            builder.append("    }\r\n");
+            if (f.getName().equalsIgnoreCase("updateTime")) {
+                builder.append(String.format("    update.set(\"%s\", %s);\r\n", f.getName(), "new Date()"));
+            } else {
+                builder.append(String.format("    if (%s != null) {\r\n", getMethod));
+                builder.append(String.format("        update.set(\"%s\", %s);\r\n", f.getName(), f.getName().equalsIgnoreCase("updateTime") ? "new Date()" : getMethod));
+                builder.append("    }\r\n");
+            }
         }
 
+        builder.append("    update(query, update);\r\n");
         builder.append("}");
-
-        System.out.println(builder.toString());
         return builder.toString();
     }
 

--
Gitblit v1.8.0