Forráskód Böngészése

更新新增或修改注解逻辑

woody 1 éve
szülő
commit
50148bd34c

+ 16 - 6
framework-database/src/main/java/com/chelvc/framework/database/annotation/CreateUpdate.java

@@ -37,18 +37,28 @@ public @interface CreateUpdate {
      */
     enum Mode {
         /**
-         * 替换
+         * 原值 + 新值
          */
-        REPLACE,
+        ADD,
 
         /**
-         * 自增
+         * 原值 - 新值
          */
-        INCREMENT,
+        SUBTRACT,
 
         /**
-         * 自减
+         * 原值 * 新值
          */
-        DECREMENT;
+        MULTIPLY,
+
+        /**
+         * 原值 / 新值
+         */
+        DIVIDE,
+
+        /**
+         * 原值替换新值
+         */
+        REPLACE;
     }
 }

+ 13 - 12
framework-database/src/main/java/com/chelvc/framework/database/mapper/InsertUpdateMethod.java

@@ -1,12 +1,12 @@
 package com.chelvc.framework.database.mapper;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.chelvc.framework.common.util.StringUtils;
 import com.chelvc.framework.database.annotation.CreateUpdate;
 import lombok.NonNull;
 
@@ -31,19 +31,20 @@ public class InsertUpdateMethod extends AbstractInsertMethod {
             if (annotation != null && !annotation.enabled()) {
                 return null;
             }
-            StringBuilder buffer = new StringBuilder().append(field.getColumn()).append(" = ");
+            String column = field.getColumn();
+            StringBuilder buffer = new StringBuilder().append(column).append(" = ").append(column);
             CreateUpdate.Mode mode = annotation == null ? CreateUpdate.Mode.REPLACE : annotation.mode();
-            if (mode == CreateUpdate.Mode.REPLACE) {
-                buffer.append("VALUES(").append(field.getColumn()).append(")");
-            } else if (mode == CreateUpdate.Mode.INCREMENT) {
-                buffer.append(field.getColumn()).append(" + 1");
-            } else if (mode == CreateUpdate.Mode.DECREMENT) {
-                buffer.append(field.getColumn()).append(" - 1");
-            } else {
-                throw new IllegalArgumentException("Not support update mode: " + mode);
+            if (mode == CreateUpdate.Mode.ADD) {
+                buffer.append(" + ");
+            } else if (mode == CreateUpdate.Mode.SUBTRACT) {
+                buffer.append(" - ");
+            } else if (mode == CreateUpdate.Mode.MULTIPLY) {
+                buffer.append(" * ");
+            } else if (mode == CreateUpdate.Mode.DIVIDE) {
+                buffer.append(" / ");
             }
-            return buffer.toString();
-        }).filter(StringUtils::notEmpty).collect(Collectors.joining(StringPool.COMMA));
+            return buffer.append("VALUES(").append(column).append(")");
+        }).filter(Objects::nonNull).collect(Collectors.joining(StringPool.COMMA));
         return String.format(
                 "<script>\nINSERT IGNORE INTO %s (%s) VALUES (%s)\n ON DUPLICATE KEY UPDATE %s\n</script>",
                 table.getTableName(), columns, properties, updates