Browse Source

TableInfo 优化

miemie 5 years ago
parent
commit
b5745ecd40

+ 2 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/AbstractMethod.java

@@ -173,7 +173,7 @@ public abstract class AbstractMethod implements Constants {
      * SQL map 查询条件
      */
     protected String sqlWhereByMap(TableInfo table) {
-        if (table.isLogicDelete()) {
+        if (table.isWithLogicDelete()) {
             // 逻辑删除
             String sqlScript = SqlScriptUtils.convertChoose("v == null", " ${k} IS NULL ",
                 " ${k} = #{v} ");
@@ -201,7 +201,7 @@ public abstract class AbstractMethod implements Constants {
      * @return String
      */
     protected String sqlWhereEntityWrapper(boolean newLine, TableInfo table) {
-        if (table.isLogicDelete()) {
+        if (table.isWithLogicDelete()) {
             String sqlScript = table.getAllSqlWhere(true, true, WRAPPER_ENTITY_DOT);
             sqlScript = SqlScriptUtils.convertIf(sqlScript, String.format("%s != null", WRAPPER_ENTITY),
                 true);

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/methods/Delete.java

@@ -33,7 +33,7 @@ public class Delete extends AbstractMethod {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         String sql;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE;
-        if (tableInfo.isLogicDelete()) {
+        if (tableInfo.isWithLogicDelete()) {
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo),
                 sqlWhereEntityWrapper(true, tableInfo),
                 sqlComment());

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/methods/DeleteBatchByIds.java

@@ -34,7 +34,7 @@ public class DeleteBatchByIds extends AbstractMethod {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         String sql;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BATCH_BY_IDS;
-        if (tableInfo.isLogicDelete()) {
+        if (tableInfo.isWithLogicDelete()) {
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo),
                 tableInfo.getKeyColumn(),
                 SqlScriptUtils.convertForeach("#{item}", COLLECTION, null, "item", COMMA),

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/methods/DeleteById.java

@@ -33,7 +33,7 @@ public class DeleteById extends AbstractMethod {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         String sql;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_ID;
-        if (tableInfo.isLogicDelete()) {
+        if (tableInfo.isWithLogicDelete()) {
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo),
                 tableInfo.getKeyColumn(), tableInfo.getKeyProperty(),
                 tableInfo.getLogicDeleteSql(true, true));

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/methods/DeleteByMap.java

@@ -35,7 +35,7 @@ public class DeleteByMap extends AbstractMethod {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         String sql;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_MAP;
-        if (tableInfo.isLogicDelete()) {
+        if (tableInfo.isWithLogicDelete()) {
             sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), sqlLogicSet(tableInfo), sqlWhereByMap(tableInfo));
             SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, Map.class);
             return addUpdateMappedStatement(mapperClass, Map.class, getMethod(sqlMethod), sqlSource);

+ 1 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/injector/methods/UpdateById.java

@@ -31,11 +31,10 @@ public class UpdateById extends AbstractMethod {
 
     @Override
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
-        boolean logicDelete = tableInfo.isLogicDelete();
         SqlMethod sqlMethod = SqlMethod.UPDATE_BY_ID;
         final String additional = optlockVersion(tableInfo) + tableInfo.getLogicDeleteSql(true, true);
         String sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(),
-            sqlSet(logicDelete, false, tableInfo, false, ENTITY, ENTITY_DOT),
+            sqlSet(tableInfo.isWithLogicDelete(), false, tableInfo, false, ENTITY, ENTITY_DOT),
             tableInfo.getKeyColumn(), ENTITY_DOT + tableInfo.getKeyProperty(), additional);
         SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass);
         return addUpdateMappedStatement(mapperClass, modelClass, getMethod(sqlMethod), sqlSource);

+ 26 - 18
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfo.java

@@ -103,11 +103,6 @@ public class TableInfo implements Constants {
      */
     @Getter
     private Configuration configuration;
-    /**
-     * 是否开启逻辑删除
-     */
-    @Setter(AccessLevel.NONE)
-    private boolean logicDelete;
     /**
      * 是否开启下划线转驼峰
      * <p>
@@ -143,29 +138,37 @@ public class TableInfo implements Constants {
     @Setter(AccessLevel.NONE)
     private boolean withUpdateFill;
     /**
-     * 表字段是否启用了乐观锁
+     * 表字段是否启用了逻辑删除
      *
-     * @since 3.3.1
+     * @since 3.3.3
      */
     @Getter
     @Setter(AccessLevel.NONE)
-    private boolean withVersion;
+    private boolean withLogicDelete;
     /**
-     * 乐观锁字段
+     * 逻辑删除字段
+     *
+     * @since 3.3.3
+     */
+    @Getter
+    @Setter(AccessLevel.NONE)
+    private TableFieldInfo logicDeleteFieldInfo;
+    /**
+     * 表字段是否启用了乐观锁
      *
      * @since 3.3.1
      */
     @Getter
     @Setter(AccessLevel.NONE)
-    private TableFieldInfo versionFieldInfo;
+    private boolean withVersion;
     /**
-     * 逻辑删除字段
+     * 乐观锁字段
      *
-     * @since 3.3.3
+     * @since 3.3.1
      */
     @Getter
     @Setter(AccessLevel.NONE)
-    private TableFieldInfo logicFieldInfo;
+    private TableFieldInfo versionFieldInfo;
 
     public TableInfo(Class<?> entityType) {
         this.entityType = entityType;
@@ -328,7 +331,7 @@ public class TableInfo implements Constants {
         String filedSqlScript = fieldList.stream()
             .filter(i -> {
                 if (ignoreLogicDelFiled) {
-                    return !(isLogicDelete() && i.isLogicDelete());
+                    return !(isWithLogicDelete() && i.isLogicDelete());
                 }
                 return true;
             })
@@ -354,7 +357,7 @@ public class TableInfo implements Constants {
         return fieldList.stream()
             .filter(i -> {
                 if (ignoreLogicDelFiled) {
-                    return !(isLogicDelete() && i.isLogicDelete());
+                    return !(isWithLogicDelete() && i.isLogicDelete());
                 }
                 return true;
             }).map(i -> i.getSqlSet(newPrefix)).filter(Objects::nonNull).collect(joining(NEWLINE));
@@ -368,7 +371,7 @@ public class TableInfo implements Constants {
      * @return sql 脚本
      */
     public String getLogicDeleteSql(boolean startWithAnd, boolean isWhere) {
-        if (logicDelete) {
+        if (withLogicDelete) {
             TableFieldInfo field = fieldList.stream().filter(TableFieldInfo::isLogicDelete).findFirst()
                 .orElseThrow(() -> ExceptionUtils.mpe("can't find the logicFiled from table {%s}", tableName));
             String logicDeleteSql = formatLogicDeleteSql(field, isWhere);
@@ -432,8 +435,8 @@ public class TableInfo implements Constants {
         AtomicInteger version = new AtomicInteger();
         fieldList.forEach(i -> {
             if (i.isLogicDelete()) {
-                this.logicDelete = true;
-                this.logicFieldInfo = i;
+                this.withLogicDelete = true;
+                this.logicDeleteFieldInfo = i;
                 logicDeleted.getAndAdd(1);
             }
             if (i.isWithInsertFill()) {
@@ -456,4 +459,9 @@ public class TableInfo implements Constants {
     public List<TableFieldInfo> getFieldList() {
         return Collections.unmodifiableList(fieldList);
     }
+
+    @Deprecated
+    public boolean isLogicDelete() {
+        return withLogicDelete;
+    }
 }

+ 1 - 1
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/test/metadata/TableInfoHelperTest.java

@@ -131,7 +131,7 @@ class TableInfoHelperTest {
         config.getDbConfig().setLogicDeleteField("logic");
         GlobalConfigUtils.setGlobalConfig(configuration, config);
         TableInfo tableInfo = TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), Logic.class);
-        assertThat(tableInfo.isLogicDelete()).isTrue();
+        assertThat(tableInfo.isWithLogicDelete()).isTrue();
         List<TableFieldInfo> fieldList = tableInfo.getFieldList();
         List<TableFieldInfo> logic = fieldList.stream().filter(TableFieldInfo::isLogicDelete).collect(Collectors.toList());
         assertThat(logic.size()).isEqualTo(1);

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

@@ -47,7 +47,7 @@ public class LogicDeleteByIdWithFill extends AbstractMethod {
     public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
         String sql;
         SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_ID;
-        if (tableInfo.isLogicDelete()) {
+        if (tableInfo.isWithLogicDelete()) {
             List<TableFieldInfo> fieldInfos = tableInfo.getFieldList().stream()
                 .filter(TableFieldInfo::isWithUpdateFill)
                 .collect(toList());