mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 09:38:26 +08:00
添加逻辑删除的自定义内容配置功能 close #I6VVLH
This commit is contained in:
parent
fdfbad3d0a
commit
4a61450591
@ -60,6 +60,13 @@ public class FlexGlobalConfig {
|
|||||||
private Map<Class<?>, InsertListener> entityInsertListeners = new ConcurrentHashMap<>();
|
private Map<Class<?>, InsertListener> entityInsertListeners = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逻辑删除的相关配置
|
||||||
|
*/
|
||||||
|
private Object normalValueOfLogicDelete = FlexConsts.LOGIC_DELETE_NORMAL;
|
||||||
|
private Object deletedValueOfLogicDelete = FlexConsts.LOGIC_DELETE_DELETED;
|
||||||
|
|
||||||
|
|
||||||
public DbType getDbType() {
|
public DbType getDbType() {
|
||||||
return dbType;
|
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<String, FlexGlobalConfig> getGlobalConfigs() {
|
public static ConcurrentHashMap<String, FlexGlobalConfig> getGlobalConfigs() {
|
||||||
return globalConfigs;
|
return globalConfigs;
|
||||||
}
|
}
|
||||||
@ -157,6 +180,7 @@ public class FlexGlobalConfig {
|
|||||||
FlexGlobalConfig.globalConfigs = globalConfigs;
|
FlexGlobalConfig.globalConfigs = globalConfigs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对应的是 注解 {@link com.mybatisflex.annotation.Id} 的配置
|
* 对应的是 注解 {@link com.mybatisflex.annotation.Id} 的配置
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.mybatisflex.core.dialect;
|
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.exception.FlexExceptions;
|
||||||
import com.mybatisflex.core.query.*;
|
import com.mybatisflex.core.query.*;
|
||||||
import com.mybatisflex.core.row.Row;
|
import com.mybatisflex.core.row.Row;
|
||||||
@ -440,7 +440,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
String[] primaryKeys = tableInfo.getPrimaryKeys();
|
String[] primaryKeys = tableInfo.getPrimaryKeys();
|
||||||
|
|
||||||
sql.append("UPDATE ").append(wrap(tableInfo.getTableName())).append(" SET ");
|
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 ");
|
sql.append(" WHERE ");
|
||||||
for (int i = 0; i < primaryKeys.length; i++) {
|
for (int i = 0; i < primaryKeys.length; i++) {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
@ -449,7 +449,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
sql.append(wrap(primaryKeys[i])).append(" = ?");
|
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
|
//租户ID
|
||||||
if (ArrayUtil.isNotEmpty(tenantIdArgs)) {
|
if (ArrayUtil.isNotEmpty(tenantIdArgs)) {
|
||||||
@ -459,6 +459,9 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String forDeleteEntityBatchByIds(TableInfo tableInfo, Object[] primaryValues) {
|
public String forDeleteEntityBatchByIds(TableInfo tableInfo, Object[] primaryValues) {
|
||||||
String logicDeleteColumn = tableInfo.getLogicDeleteColumn();
|
String logicDeleteColumn = tableInfo.getLogicDeleteColumn();
|
||||||
@ -479,7 +482,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
StringBuilder sql = new StringBuilder();
|
StringBuilder sql = new StringBuilder();
|
||||||
sql.append("UPDATE ");
|
sql.append("UPDATE ");
|
||||||
sql.append(wrap(tableInfo.getTableName()));
|
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(" WHERE ");
|
||||||
sql.append("(");
|
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)) {
|
if (ArrayUtil.isNotEmpty(tenantIdArgs)) {
|
||||||
sql.append(" AND ").append(wrap(tableInfo.getTenantIdColumn())).append(" IN ").append(buildQuestion(tenantIdArgs.length, true));
|
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
|
//ignore selectColumns
|
||||||
StringBuilder sqlBuilder = new StringBuilder("UPDATE ");
|
StringBuilder sqlBuilder = new StringBuilder("UPDATE ");
|
||||||
sqlBuilder.append(wrap(tableInfo.getTableName()));
|
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);
|
buildJoinSql(sqlBuilder, queryWrapper, allTables);
|
||||||
@ -594,7 +597,7 @@ public class CommonsDialectImpl implements IDialect {
|
|||||||
//逻辑删除条件,已删除的数据不能被修改
|
//逻辑删除条件,已删除的数据不能被修改
|
||||||
String logicDeleteColumn = tableInfo.getLogicDeleteColumn();
|
String logicDeleteColumn = tableInfo.getLogicDeleteColumn();
|
||||||
if (StringUtil.isNotBlank(logicDeleteColumn)) {
|
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();
|
String logicDeleteColumn = tableInfo.getLogicDeleteColumn();
|
||||||
if (StringUtil.isNotBlank(logicDeleteColumn)) {
|
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)) {
|
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)) {
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -493,7 +493,9 @@ public class TableInfo {
|
|||||||
|
|
||||||
//逻辑删除条件,已删除的数据不能被修改
|
//逻辑删除条件,已删除的数据不能被修改
|
||||||
if (StringUtil.isNotBlank(logicDeleteColumn)) {
|
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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//多租户
|
//多租户
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user