为逻辑删除的默认值功能添加常量

This commit is contained in:
开源海哥 2023-03-02 17:58:06 +08:00
parent d99b397699
commit e38273bb9e
2 changed files with 23 additions and 8 deletions

View File

@ -38,4 +38,13 @@ public class FlexConsts {
public static final String IGNORE_NULLS = "$$ignoreNulls"; public static final String IGNORE_NULLS = "$$ignoreNulls";
public static final String METHOD_INSERT_BATCH = "insertBatch"; public static final String METHOD_INSERT_BATCH = "insertBatch";
/**
* entity 使用逻辑删除时0 entity 的正常状态
*/
public static final int DEL_STATUS_NORMAL = 0;
/**
* entity 使用逻辑删除时1 entity 的删除状态
*/
public static final int DEL_STATUS_DELETED = 1;
} }

View File

@ -15,6 +15,8 @@
*/ */
package com.mybatisflex.core.dialect; package com.mybatisflex.core.dialect;
import com.mybatisflex.core.FlexConsts;
import com.mybatisflex.core.exception.FlexExceptions;
import com.mybatisflex.core.querywrapper.*; import com.mybatisflex.core.querywrapper.*;
import com.mybatisflex.core.row.Row; import com.mybatisflex.core.row.Row;
import com.mybatisflex.core.table.TableInfo; import com.mybatisflex.core.table.TableInfo;
@ -414,7 +416,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(" = 1"); sql.append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.DEL_STATUS_DELETED);
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) {
@ -423,7 +425,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(" = 0 "); sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.DEL_STATUS_NORMAL);
return sql.toString(); return sql.toString();
} }
@ -440,7 +442,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(" = 1"); sql.append("SET ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.DEL_STATUS_DELETED);
sql.append(" WHERE "); sql.append(" WHERE ");
String[] primaryKeys = tableInfo.getPrimaryKeys(); String[] primaryKeys = tableInfo.getPrimaryKeys();
@ -492,7 +494,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(" = 1 "); sqlBuilder.append(" SET ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.DEL_STATUS_DELETED);
buildJoinSql(sqlBuilder, queryWrapper, allTables); buildJoinSql(sqlBuilder, queryWrapper, allTables);
@ -547,12 +549,15 @@ 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(" = 0 "); sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.DEL_STATUS_NORMAL);
} }
//乐观锁条件 //乐观锁条件
if (StringUtil.isNotBlank(versionColumn)) { if (StringUtil.isNotBlank(versionColumn)) {
Object versionValue = tableInfo.getColumnValue(entity, versionColumn); Object versionValue = tableInfo.getColumnValue(entity, versionColumn);
if (versionValue == null) {
throw FlexExceptions.wrap("The version value of entity[%s] must not be null.", entity);
}
sql.append(" AND ").append(wrap(versionColumn)).append(" = ").append(versionValue); sql.append(" AND ").append(wrap(versionColumn)).append(" = ").append(versionValue);
} }
@ -599,7 +604,7 @@ public class CommonsDialectImpl implements IDialect {
//逻辑删除条件已删除的数据不能被修改 //逻辑删除条件已删除的数据不能被修改
String logicDeleteColumn = tableInfo.getLogicDeleteColumn(); String logicDeleteColumn = tableInfo.getLogicDeleteColumn();
if (StringUtil.isNotBlank(logicDeleteColumn)) { if (StringUtil.isNotBlank(logicDeleteColumn)) {
queryWrapper.and(new StringQueryCondition(wrap(logicDeleteColumn) + " = 0")); queryWrapper.and(new StringQueryCondition(wrap(logicDeleteColumn) + " = " + FlexConsts.DEL_STATUS_NORMAL));
} }
sql.append(buildWhereConditionSql(queryWrapper)); sql.append(buildWhereConditionSql(queryWrapper));
@ -623,7 +628,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(" = 0 "); sql.append(" AND ").append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.DEL_STATUS_NORMAL);
} }
return sql.toString(); return sql.toString();
@ -639,7 +644,8 @@ public class CommonsDialectImpl implements IDialect {
String logicDeleteColumn = tableInfo.getLogicDeleteColumn(); String logicDeleteColumn = tableInfo.getLogicDeleteColumn();
if (StringUtil.isNotBlank(logicDeleteColumn)) { if (StringUtil.isNotBlank(logicDeleteColumn)) {
sql.append(wrap(logicDeleteColumn)).append(" = 0 AND ("); sql.append(wrap(logicDeleteColumn)).append(" = ").append(FlexConsts.DEL_STATUS_NORMAL);
sql.append(" AND (");
} }
//多主键的场景 //多主键的场景