瀏覽代碼

移除多余的逻辑删除抽象

= 7 年之前
父節點
當前提交
339769b655

+ 0 - 54
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/mapper/LogicAllSqlInjector.java

@@ -1,54 +0,0 @@
-/**
- * Copyright (c) 2011-2014, hubin (jobob@qq.com).
- * <p>
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.baomidou.mybatisplus.mapper;
-
-import com.baomidou.mybatisplus.entity.TableInfo;
-
-/**
- * <p>
- * 逻辑删除,支持全update、select类型SQL自动添加逻辑删除字段,不仅仅是mp提供的api自动添加<br>
- * 1、支持逻辑删除
- * </p>
- *
- * @author hubin willenfoo
- * @Date 2017-09-09
- */
-public class LogicAllSqlInjector extends SuperLogicSqlInjector {
-
-    /**
-     * 根据 ID 删除
-     */
-    @Override
-    protected void injectDeleteByIdSql(boolean batch, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
-        super.injectDeleteByIdSql(batch, mapperClass, modelClass, table);
-    }
-
-    /**
-     * 根据 SQL 删除
-     */
-    @Override
-    protected void injectDeleteSql(Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
-        super.injectDeleteSql(mapperClass, modelClass, table);
-    }
-
-    /**
-     * 根据 MAP 删除
-     */
-    @Override
-    protected void injectDeleteByMapSql(Class<?> mapperClass, TableInfo table) {
-        super.injectDeleteByMapSql(mapperClass, table);
-    }
-}

+ 73 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/mapper/LogicSqlInjector.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.mapper;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.ibatis.mapping.SqlSource;
 import org.apache.ibatis.scripting.defaults.RawSqlSource;
@@ -35,14 +36,34 @@ import com.baomidou.mybatisplus.toolkit.StringUtils;
  * @author hubin willenfoo
  * @Date 2017-09-09
  */
-public class LogicSqlInjector extends SuperLogicSqlInjector {
+public class LogicSqlInjector extends AutoSqlInjector {
 
     /**
      * 根据 ID 删除
      */
     @Override
     protected void injectDeleteByIdSql(boolean batch, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
-        super.injectDeleteByIdSql(batch, mapperClass, modelClass, table);
+        if (table.isLogicDelete()) {
+            // 逻辑删除注入
+            SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_ID;
+            SqlSource sqlSource;
+            String idStr = table.getKeyProperty();
+            if (batch) {
+                sqlMethod = SqlMethod.LOGIC_DELETE_BATCH_BY_IDS;
+                StringBuilder ids = new StringBuilder();
+                ids.append("\n<foreach item=\"item\" index=\"index\" collection=\"coll\" separator=\",\">");
+                ids.append("#{item}");
+                ids.append("\n</foreach>");
+                idStr = ids.toString();
+            }
+            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlLogicSet(table),
+                table.getKeyColumn(), idStr);
+            sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
+            this.addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource);
+        } else {
+            // 正常删除
+            super.injectDeleteByIdSql(batch, mapperClass, modelClass, table);
+        }
     }
 
     /**
@@ -50,7 +71,17 @@ public class LogicSqlInjector extends SuperLogicSqlInjector {
      */
     @Override
     protected void injectDeleteSql(Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
-        super.injectDeleteSql(mapperClass, modelClass, table);
+        if (table.isLogicDelete()) {
+            // 逻辑删除注入
+            SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE;
+            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlLogicSet(table),
+                sqlWhereEntityWrapper(table));
+            SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
+            this.addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource);
+        } else {
+            // 正常删除
+            super.injectDeleteSql(mapperClass, modelClass, table);
+        }
     }
 
     /**
@@ -58,7 +89,17 @@ public class LogicSqlInjector extends SuperLogicSqlInjector {
      */
     @Override
     protected void injectDeleteByMapSql(Class<?> mapperClass, TableInfo table) {
-        super.injectDeleteByMapSql(mapperClass, table);
+        if (table.isLogicDelete()) {
+            // 逻辑删除注入
+            SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_MAP;
+            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlLogicSet(table),
+                sqlWhereByMap(table));
+            SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, Map.class);
+            this.addUpdateMappedStatement(mapperClass, Map.class, sqlMethod.getMethod(), sqlSource);
+        } else {
+            // 正常删除
+            super.injectDeleteByMapSql(mapperClass, table);
+        }
     }
 
     /**
@@ -149,6 +190,34 @@ public class LogicSqlInjector extends SuperLogicSqlInjector {
         return sql.toString();
     }
 
+    /**
+     * <p>
+     * SQL 更新 set 语句
+     * </p>
+     *
+     * @param table 表信息
+     * @return sql set 片段
+     */
+    protected String sqlLogicSet(TableInfo table) {
+        List<TableFieldInfo> fieldList = table.getFieldList();
+        StringBuilder set = new StringBuilder("SET ");
+        int i = 0;
+        for (TableFieldInfo fieldInfo : fieldList) {
+            if (fieldInfo.isLogicDelete()) {
+                if (++i > 1) {
+                    set.append(",");
+                }
+                set.append(fieldInfo.getColumn()).append("=");
+                if (StringUtils.isCharSequence(fieldInfo.getPropertyType())) {
+                    set.append("'").append(fieldInfo.getLogicDeleteValue()).append("'");
+                } else {
+                    set.append(fieldInfo.getLogicDeleteValue());
+                }
+            }
+        }
+        return set.toString();
+    }
+
     // ------------ 处理逻辑删除条件过滤 ------------
 
     @Override

+ 0 - 115
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/mapper/SuperLogicSqlInjector.java

@@ -1,115 +0,0 @@
-package com.baomidou.mybatisplus.mapper;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.ibatis.mapping.SqlSource;
-
-import com.baomidou.mybatisplus.entity.TableFieldInfo;
-import com.baomidou.mybatisplus.entity.TableInfo;
-import com.baomidou.mybatisplus.enums.SqlMethod;
-import com.baomidou.mybatisplus.toolkit.StringUtils;
-
-/**
- * <p>
- * 逻辑删除,公共父类,抽出来
- * 支持全update、select类型SQL自动添加逻辑删除字段和mp提供的api自动添加的公共方法 <br>
- * </p>
- *
- * @author hubin willenfoo
- * @Date 2018-03-09
- */
-public class SuperLogicSqlInjector extends AutoSqlInjector {
-
-    /**
-     * 根据 ID 删除
-     */
-    @Override
-    protected void injectDeleteByIdSql(boolean batch, Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
-        if (table.isLogicDelete()) {
-            // 逻辑删除注入
-            SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_ID;
-            SqlSource sqlSource;
-            String idStr = table.getKeyProperty();
-            if (batch) {
-                sqlMethod = SqlMethod.LOGIC_DELETE_BATCH_BY_IDS;
-                StringBuilder ids = new StringBuilder();
-                ids.append("\n<foreach item=\"item\" index=\"index\" collection=\"coll\" separator=\",\">");
-                ids.append("#{item}");
-                ids.append("\n</foreach>");
-                idStr = ids.toString();
-            }
-            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlLogicSet(table),
-                table.getKeyColumn(), idStr);
-            sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
-            this.addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource);
-        } else {
-            // 正常删除
-            super.injectDeleteByIdSql(batch, mapperClass, modelClass, table);
-        }
-    }
-
-    /**
-     * 根据 SQL 删除
-     */
-    @Override
-    protected void injectDeleteSql(Class<?> mapperClass, Class<?> modelClass, TableInfo table) {
-        if (table.isLogicDelete()) {
-            // 逻辑删除注入
-            SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE;
-            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlLogicSet(table),
-                sqlWhereEntityWrapper(table));
-            SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
-            this.addUpdateMappedStatement(mapperClass, modelClass, sqlMethod.getMethod(), sqlSource);
-        } else {
-            // 正常删除
-            super.injectDeleteSql(mapperClass, modelClass, table);
-        }
-    }
-
-    /**
-     * 根据 MAP 删除
-     */
-    @Override
-    protected void injectDeleteByMapSql(Class<?> mapperClass, TableInfo table) {
-        if (table.isLogicDelete()) {
-            // 逻辑删除注入
-            SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_MAP;
-            String sql = String.format(sqlMethod.getSql(), table.getTableName(), sqlLogicSet(table),
-                sqlWhereByMap(table));
-            SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, Map.class);
-            this.addUpdateMappedStatement(mapperClass, Map.class, sqlMethod.getMethod(), sqlSource);
-        } else {
-            // 正常删除
-            super.injectDeleteByMapSql(mapperClass, table);
-        }
-    }
-
-    /**
-     * <p>
-     * SQL 更新 set 语句
-     * </p>
-     *
-     * @param table 表信息
-     * @return sql set 片段
-     */
-    protected String sqlLogicSet(TableInfo table) {
-        List<TableFieldInfo> fieldList = table.getFieldList();
-        StringBuilder set = new StringBuilder("SET ");
-        int i = 0;
-        for (TableFieldInfo fieldInfo : fieldList) {
-            if (fieldInfo.isLogicDelete()) {
-                if (++i > 1) {
-                    set.append(",");
-                }
-                set.append(fieldInfo.getColumn()).append("=");
-                if (StringUtils.isCharSequence(fieldInfo.getPropertyType())) {
-                    set.append("'").append(fieldInfo.getLogicDeleteValue()).append("'");
-                } else {
-                    set.append(fieldInfo.getLogicDeleteValue());
-                }
-            }
-        }
-        return set.toString();
-    }
-}

+ 2 - 1
mybatis-plus-generate/src/main/java/com/baomidou/mybatisplus/generator/config/StrategyConfig.java

@@ -432,8 +432,9 @@ public class StrategyConfig {
         return fieldPrefix;
     }
 
-    public void setFieldPrefix(String[] fieldPrefix) {
+    public StrategyConfig setFieldPrefix(String[] fieldPrefix) {
         this.fieldPrefix = fieldPrefix;
+        return this;
     }
 
     public StrategyConfig fieldPrefix(String... fieldPrefixs) {

+ 1 - 0
mybatis-plus-generate/src/test/java/com/baomidou/mybatisplus/test/generator/PostgreSQLGenerator.java

@@ -78,6 +78,7 @@ public class PostgreSQLGenerator extends GeneratorTest {
         // strategy.setCapitalMode(true);// 全局大写命名
         // strategy.setDbColumnUnderline(true);//全局下划线命名
         strategy.setTablePrefix(new String[]{"bmd_", "mp_"});// 此处可以修改为您的表前缀
+        strategy.setFieldPrefix(new String[]{"A_"});
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 允许字段策略独立设置,默认为 naming 策略
         // strategy.setInclude(new String[] { "user" }); // 需要生成的表