Browse Source

修正源码,测试到了 deleteBatchIds

miemie 7 years ago
parent
commit
be703dfe1e

+ 2 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/SqlMethod.java

@@ -40,10 +40,10 @@ public enum SqlMethod {
     /**
     /**
      * 逻辑删除
      * 逻辑删除
      */
      */
-    LOGIC_DELETE_BY_ID("deleteById", "根据ID 逻辑删除一条数据", "<script>UPDATE %s %s WHERE %s=#{%s}</script>"),
+    LOGIC_DELETE_BY_ID("deleteById", "根据ID 逻辑删除一条数据", "<script>UPDATE %s %s WHERE %s=#{%s} %s</script>"),
     LOGIC_DELETE_BY_MAP("deleteByMap", "根据columnMap 条件逻辑删除记录", "<script>UPDATE %s %s %s</script>"),
     LOGIC_DELETE_BY_MAP("deleteByMap", "根据columnMap 条件逻辑删除记录", "<script>UPDATE %s %s %s</script>"),
     LOGIC_DELETE("delete", "根据 entity 条件逻辑删除记录", "<script>UPDATE %s %s %s</script>"),
     LOGIC_DELETE("delete", "根据 entity 条件逻辑删除记录", "<script>UPDATE %s %s %s</script>"),
-    LOGIC_DELETE_BATCH_BY_IDS("deleteBatchIds", "根据ID集合,批量逻辑删除数据", "<script>UPDATE %s %s WHERE %s IN (%s)</script>"),
+    LOGIC_DELETE_BATCH_BY_IDS("deleteBatchIds", "根据ID集合,批量逻辑删除数据", "<script>UPDATE %s %s WHERE %s IN (%s) %s</script>"),
 
 
     /**
     /**
      * 修改
      * 修改

+ 7 - 8
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/LogicAbstractMethod.java

@@ -44,13 +44,12 @@ public abstract class LogicAbstractMethod extends AbstractMethod {
      * @param table 表信息
      * @param table 表信息
      * @return sql and 片段
      * @return sql and 片段
      */
      */
-    public String getLogicDeleteSql(TableInfo table) {
+    public String getLogicDeleteSql(boolean startWithAnd, TableInfo table) {
         StringBuilder sql = new StringBuilder();
         StringBuilder sql = new StringBuilder();
         List<TableFieldInfo> fieldList = table.getFieldList();
         List<TableFieldInfo> fieldList = table.getFieldList();
-        int i = 0;
         for (TableFieldInfo fieldInfo : fieldList) {
         for (TableFieldInfo fieldInfo : fieldList) {
             if (fieldInfo.isLogicDelete()) {
             if (fieldInfo.isLogicDelete()) {
-                if (++i > 1) {
+                if (startWithAnd) {
                     sql.append(" AND ");
                     sql.append(" AND ");
                 }
                 }
                 sql.append(fieldInfo.getColumn());
                 sql.append(fieldInfo.getColumn());
@@ -114,15 +113,15 @@ public abstract class LogicAbstractMethod extends AbstractMethod {
                     fieldInfo.getColumn(), "ew.entity." + fieldInfo.getEl()));
                     fieldInfo.getColumn(), "ew.entity." + fieldInfo.getEl()));
                 where.append(convertIfTag(fieldInfo, true));
                 where.append(convertIfTag(fieldInfo, true));
             }
             }
-            where.append("</if> AND ");
+            where.append("</if>");
             // 删除逻辑
             // 删除逻辑
-            where.append(getLogicDeleteSql(table));
+            where.append(getLogicDeleteSql(true, table));
             // SQL 片段
             // SQL 片段
             where.append("<if test=\"ew.sqlSegment!=null and ew.sqlSegment!=''\"> AND ${ew.sqlSegment}</if>");
             where.append("<if test=\"ew.sqlSegment!=null and ew.sqlSegment!=''\"> AND ${ew.sqlSegment}</if>");
             where.append("</trim>");
             where.append("</trim>");
             where.append("</when><otherwise>WHERE ");
             where.append("</when><otherwise>WHERE ");
             // 删除逻辑
             // 删除逻辑
-            where.append(getLogicDeleteSql(table));
+            where.append(getLogicDeleteSql(false, table));
             where.append("</otherwise></choose>");
             where.append("</otherwise></choose>");
             return where.toString();
             return where.toString();
         }
         }
@@ -140,8 +139,8 @@ public abstract class LogicAbstractMethod extends AbstractMethod {
                 .append("<choose><when test=\"v==null\"> ${k} IS NULL </when>")
                 .append("<choose><when test=\"v==null\"> ${k} IS NULL </when>")
                 .append("<otherwise> ${k}=#{v} </otherwise></choose>")
                 .append("<otherwise> ${k}=#{v} </otherwise></choose>")
                 .append("</foreach>")
                 .append("</foreach>")
-                .append("</if> AND ")
-                .append(getLogicDeleteSql(table))
+                .append("</if>")
+                .append(getLogicDeleteSql(true, table))
                 .append("</trim>")
                 .append("</trim>")
                 .toString();
                 .toString();
         }
         }

+ 4 - 2
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/methods/LogicDeleteBatchByIds.java

@@ -37,8 +37,10 @@ public class LogicDeleteBatchByIds extends LogicAbstractMethod {
         String sql;
         String sql;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BATCH_BY_IDS;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BATCH_BY_IDS;
         if (tableInfo.isLogicDelete()) {
         if (tableInfo.isLogicDelete()) {
-            sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo), tableInfo.getKeyColumn(),
-                "<foreach item=\"item\" collection=\"coll\" separator=\",\">#{item}</foreach>");
+            sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo),
+                tableInfo.getKeyColumn(),
+                "<foreach item=\"item\" collection=\"coll\" separator=\",\">#{item}</foreach>",
+                getLogicDeleteSql(true, tableInfo));
         } else {
         } else {
             sqlMethod = SqlMethod.DELETE_BATCH_BY_IDS;
             sqlMethod = SqlMethod.DELETE_BATCH_BY_IDS;
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), tableInfo.getKeyColumn(),
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), tableInfo.getKeyColumn(),

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/methods/LogicDeleteById.java

@@ -38,7 +38,7 @@ public class LogicDeleteById extends LogicAbstractMethod {
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_ID;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_ID;
         if (tableInfo.isLogicDelete()) {
         if (tableInfo.isLogicDelete()) {
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo),
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo),
-                tableInfo.getKeyColumn(), tableInfo.getKeyProperty());
+                tableInfo.getKeyColumn(), tableInfo.getKeyProperty(), getLogicDeleteSql(true, tableInfo));
         } else {
         } else {
             sqlMethod = SqlMethod.DELETE_BY_ID;
             sqlMethod = SqlMethod.DELETE_BY_ID;
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), tableInfo.getKeyColumn(),
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), tableInfo.getKeyColumn(),

+ 2 - 2
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/methods/LogicSelectBatchByIds.java

@@ -37,8 +37,8 @@ public class LogicSelectBatchByIds extends LogicAbstractMethod {
         SqlMethod sqlMethod = SqlMethod.LOGIC_SELECT_BATCH_BY_IDS;
         SqlMethod sqlMethod = SqlMethod.LOGIC_SELECT_BATCH_BY_IDS;
         SqlSource sqlSource = languageDriver.createSqlSource(configuration, String.format(sqlMethod.getSql(),
         SqlSource sqlSource = languageDriver.createSqlSource(configuration, String.format(sqlMethod.getSql(),
             sqlSelectColumns(tableInfo, false), tableInfo.getTableName(), tableInfo.getKeyColumn(),
             sqlSelectColumns(tableInfo, false), tableInfo.getTableName(), tableInfo.getKeyColumn(),
-            new StringBuilder("<foreach item=\"item\" collection=\"coll\" separator=\",\">#{item}</foreach>").toString(),
-            getLogicDeleteSql(tableInfo)), modelClass);
+            "<foreach item=\"item\" collection=\"coll\" separator=\",\">#{item}</foreach>",
+            getLogicDeleteSql(true, tableInfo)), modelClass);
         return addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, modelClass, tableInfo);
         return addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, modelClass, tableInfo);
     }
     }
 }
 }

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/methods/LogicSelectById.java

@@ -37,7 +37,7 @@ public class LogicSelectById extends LogicAbstractMethod {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         SqlMethod sqlMethod = SqlMethod.LOGIC_SELECT_BY_ID;
         SqlMethod sqlMethod = SqlMethod.LOGIC_SELECT_BY_ID;
         SqlSource sqlSource = new RawSqlSource(configuration, String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, false),
         SqlSource sqlSource = new RawSqlSource(configuration, String.format(sqlMethod.getSql(), sqlSelectColumns(tableInfo, false),
-            tableInfo.getTableName(), tableInfo.getKeyColumn(), tableInfo.getKeyProperty(), getLogicDeleteSql(tableInfo)), Object.class);
+            tableInfo.getTableName(), tableInfo.getKeyColumn(), tableInfo.getKeyProperty(), getLogicDeleteSql(true, tableInfo)), Object.class);
         return addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, modelClass, tableInfo);
         return addSelectMappedStatement(mapperClass, sqlMethod.getMethod(), sqlSource, modelClass, tableInfo);
     }
     }
 }
 }

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/injector/methods/LogicUpdateById.java

@@ -43,7 +43,7 @@ public class LogicUpdateById extends LogicAbstractMethod {
                 new StringBuilder("<if test=\"et instanceof java.util.Map\">")
                 new StringBuilder("<if test=\"et instanceof java.util.Map\">")
                     .append("<if test=\"et.MP_OPTLOCK_VERSION_ORIGINAL!=null\">")
                     .append("<if test=\"et.MP_OPTLOCK_VERSION_ORIGINAL!=null\">")
                     .append(" AND ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}")
                     .append(" AND ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}")
-                    .append("</if></if> AND ").append(getLogicDeleteSql(tableInfo)));
+                    .append("</if></if>").append(getLogicDeleteSql(true,tableInfo)));
         } else {
         } else {
             sqlMethod = SqlMethod.UPDATE_BY_ID;
             sqlMethod = SqlMethod.UPDATE_BY_ID;
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(),
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(),

+ 3 - 1
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/MysqlTestDataMapperTest.java

@@ -98,7 +98,9 @@ public class MysqlTestDataMapperTest {
     @Test
     @Test
     @Transactional
     @Transactional
     public void deleteBatchIds() {
     public void deleteBatchIds() {
-        mapper.deleteBatchIds(Arrays.asList(1014132604940615682L, 1014132604940615652L));
+        List<Long> ids = Arrays.asList(1014132604940615682L, 1014132604940615652L);
+        mapper.deleteBatchIds(ids);
+        logicMapper.deleteBatchIds(ids);
     }
     }
 
 
     @Test
     @Test