From 4a61450591a02095c2fecf2c54e7c88e9c063f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=80=E6=BA=90=E6=B5=B7=E5=93=A5?= Date: Sun, 16 Apr 2023 12:12:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=80=BB=E8=BE=91=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD=20close=20#I6VVLH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatisflex/core/FlexGlobalConfig.java | 24 +++++++++++++++ .../core/dialect/CommonsDialectImpl.java | 30 +++++++++++++------ .../com/mybatisflex/core/table/TableInfo.java | 4 ++- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java index 69605024..cac61e91 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/FlexGlobalConfig.java @@ -60,6 +60,13 @@ public class FlexGlobalConfig { private Map, InsertListener> entityInsertListeners = new ConcurrentHashMap<>(); + /** + * 逻辑删除的相关配置 + */ + private Object normalValueOfLogicDelete = FlexConsts.LOGIC_DELETE_NORMAL; + private Object deletedValueOfLogicDelete = FlexConsts.LOGIC_DELETE_DELETED; + + public DbType getDbType() { return dbType; } @@ -149,6 +156,22 @@ public class FlexGlobalConfig { } + public Object getNormalValueOfLogicDelete() { + return normalValueOfLogicDelete; + } + + public void setNormalValueOfLogicDelete(Object normalValueOfLogicDelete) { + this.normalValueOfLogicDelete = normalValueOfLogicDelete; + } + + public Object getDeletedValueOfLogicDelete() { + return deletedValueOfLogicDelete; + } + + public void setDeletedValueOfLogicDelete(Object deletedValueOfLogicDelete) { + this.deletedValueOfLogicDelete = deletedValueOfLogicDelete; + } + public static ConcurrentHashMap getGlobalConfigs() { return globalConfigs; } @@ -157,6 +180,7 @@ public class FlexGlobalConfig { FlexGlobalConfig.globalConfigs = globalConfigs; } + /** * 对应的是 注解 {@link com.mybatisflex.annotation.Id} 的配置 */ diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/CommonsDialectImpl.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/CommonsDialectImpl.java index 25b8b6f0..5b9c8c44 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/CommonsDialectImpl.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/CommonsDialectImpl.java @@ -15,7 +15,7 @@ */ package com.mybatisflex.core.dialect; -import com.mybatisflex.core.FlexConsts; +import com.mybatisflex.core.FlexGlobalConfig; import com.mybatisflex.core.exception.FlexExceptions; import com.mybatisflex.core.query.*; import com.mybatisflex.core.row.Row; @@ -440,7 +440,7 @@ public class CommonsDialectImpl implements IDialect { String[] primaryKeys = tableInfo.getPrimaryKeys(); sql.append("UPDATE ").append(wrap(tableInfo.getTableName())).append(" SET "); - sql.append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_DELETED); + sql.append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicDeletedValue())); sql.append(" WHERE "); for (int i = 0; i < primaryKeys.length; i++) { if (i > 0) { @@ -449,7 +449,7 @@ public class CommonsDialectImpl implements IDialect { sql.append(wrap(primaryKeys[i])).append(" = ?"); } - sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_NORMAL); + sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicNormalValue())); //租户ID if (ArrayUtil.isNotEmpty(tenantIdArgs)) { @@ -459,6 +459,9 @@ public class CommonsDialectImpl implements IDialect { return sql.toString(); } + + + @Override public String forDeleteEntityBatchByIds(TableInfo tableInfo, Object[] primaryValues) { String logicDeleteColumn = tableInfo.getLogicDeleteColumn(); @@ -479,7 +482,7 @@ public class CommonsDialectImpl implements IDialect { StringBuilder sql = new StringBuilder(); sql.append("UPDATE "); sql.append(wrap(tableInfo.getTableName())); - sql.append(" SET ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_DELETED); + sql.append(" SET ").append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicDeletedValue())); sql.append(" WHERE "); sql.append("("); @@ -511,7 +514,7 @@ public class CommonsDialectImpl implements IDialect { } } - sql.append(") AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_NORMAL); + sql.append(") AND ").append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicNormalValue())); if (ArrayUtil.isNotEmpty(tenantIdArgs)) { sql.append(" AND ").append(wrap(tableInfo.getTenantIdColumn())).append(" IN ").append(buildQuestion(tenantIdArgs.length, true)); @@ -539,7 +542,7 @@ public class CommonsDialectImpl implements IDialect { //ignore selectColumns StringBuilder sqlBuilder = new StringBuilder("UPDATE "); sqlBuilder.append(wrap(tableInfo.getTableName())); - sqlBuilder.append(" SET ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_DELETED); + sqlBuilder.append(" SET ").append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicDeletedValue())); buildJoinSql(sqlBuilder, queryWrapper, allTables); @@ -594,7 +597,7 @@ public class CommonsDialectImpl implements IDialect { //逻辑删除条件,已删除的数据不能被修改 String logicDeleteColumn = tableInfo.getLogicDeleteColumn(); if (StringUtil.isNotBlank(logicDeleteColumn)) { - sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_NORMAL); + sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicNormalValue())); } @@ -676,7 +679,7 @@ public class CommonsDialectImpl implements IDialect { //逻辑删除的情况下,需要添加逻辑删除的条件 String logicDeleteColumn = tableInfo.getLogicDeleteColumn(); if (StringUtil.isNotBlank(logicDeleteColumn)) { - sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_NORMAL); + sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicNormalValue())); } //多租户 @@ -734,7 +737,7 @@ public class CommonsDialectImpl implements IDialect { if (StringUtil.isNotBlank(logicDeleteColumn)) { - sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.LOGIC_DELETE_NORMAL); + sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(wrap(getLogicNormalValue())); } if (ArrayUtil.isNotEmpty(tenantIdArgs)) { @@ -835,4 +838,13 @@ public class CommonsDialectImpl implements IDialect { } + protected String getLogicNormalValue() { + return FlexGlobalConfig.getDefaultConfig().getNormalValueOfLogicDelete().toString(); + } + + + protected String getLogicDeletedValue(){ + return FlexGlobalConfig.getDefaultConfig().getDeletedValueOfLogicDelete().toString(); + } + } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java index 6f5e1996..55f37906 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java @@ -493,7 +493,9 @@ public class TableInfo { //逻辑删除条件,已删除的数据不能被修改 if (StringUtil.isNotBlank(logicDeleteColumn)) { - queryWrapper.and(QueryCondition.create(tableName, logicDeleteColumn, QueryCondition.LOGIC_EQUALS, FlexConsts.LOGIC_DELETE_NORMAL)); +// queryWrapper.and(QueryCondition.create(tableName, logicDeleteColumn, QueryCondition.LOGIC_EQUALS, FlexConsts.LOGIC_DELETE_NORMAL)); + queryWrapper.and(QueryCondition.create(tableName, logicDeleteColumn, QueryCondition.LOGIC_EQUALS + , FlexGlobalConfig.getDefaultConfig().getNormalValueOfLogicDelete())); } //多租户