注入方法deleteBatchIds重命名deleteByIds.
This commit is contained in:
parent
3d7faeef0c
commit
566cad8522
@ -20,6 +20,7 @@
|
||||
- feat: 修改AES密钥随机性生成
|
||||
- feat: UpdateWrapper增加checkSqlInjection方法
|
||||
- feat: 调整DDL脚本自动装配逻辑(当无实现时或无mybatis-plus-extension模块时不注入DDL运行bean)
|
||||
- feat: 注入方法deleteBatchIds重命名deleteByIds
|
||||
- feat: SpringBoot升级至2.7.18和3.2.6
|
||||
- feat: 升级kotlin至1.9.24
|
||||
- feat: 升级lombok至1.18.32
|
||||
|
@ -35,7 +35,15 @@ public enum SqlMethod {
|
||||
@Deprecated
|
||||
DELETE_BY_MAP("deleteByMap", "根据columnMap 条件删除记录", "<script>\nDELETE FROM %s %s\n</script>"),
|
||||
DELETE("delete", "根据 entity 条件删除记录", "<script>\nDELETE FROM %s %s %s\n</script>"),
|
||||
/**
|
||||
* @deprecated 3.5.7 {@link #DELETE_BY_IDS}
|
||||
*/
|
||||
@Deprecated
|
||||
DELETE_BATCH_BY_IDS("deleteBatchIds", "根据ID集合,批量删除数据", "<script>\nDELETE FROM %s WHERE %s IN (%s)\n</script>"),
|
||||
/**
|
||||
* @since 3.5.7
|
||||
*/
|
||||
DELETE_BY_IDS("deleteByIds", "根据ID集合,批量删除数据", "<script>\nDELETE FROM %s WHERE %s IN (%s)\n</script>"),
|
||||
|
||||
/**
|
||||
* 逻辑删除
|
||||
@ -43,7 +51,15 @@ public enum SqlMethod {
|
||||
LOGIC_DELETE_BY_ID("deleteById", "根据ID 逻辑删除一条数据", "<script>\nUPDATE %s %s WHERE %s=#{%s} %s\n</script>"),
|
||||
LOGIC_DELETE_BY_MAP("deleteByMap", "根据columnMap 条件逻辑删除记录", "<script>\nUPDATE %s %s %s\n</script>"),
|
||||
LOGIC_DELETE("delete", "根据 entity 条件逻辑删除记录", "<script>\nUPDATE %s %s %s %s\n</script>"),
|
||||
/**
|
||||
* @deprecated 3.5.7 {@link #LOGIC_DELETE_BY_IDS}
|
||||
*/
|
||||
@Deprecated
|
||||
LOGIC_DELETE_BATCH_BY_IDS("deleteBatchIds", "根据ID集合,批量逻辑删除数据", "<script>\nUPDATE %s %s WHERE %s IN (%s) %s\n</script>"),
|
||||
/**
|
||||
* @since 3.5.7
|
||||
*/
|
||||
LOGIC_DELETE_BY_IDS("deleteByIds", "根据ID集合,批量逻辑删除数据", "<script>\nUPDATE %s %s WHERE %s IN (%s) %s\n</script>"),
|
||||
|
||||
/**
|
||||
* 修改
|
||||
|
@ -48,7 +48,7 @@ public class DefaultSqlInjector extends AbstractSqlInjector {
|
||||
.add(new SelectList());
|
||||
if (tableInfo.havePK()) {
|
||||
builder.add(new DeleteById())
|
||||
.add(new DeleteBatchByIds())
|
||||
.add(new DeleteByIds())
|
||||
.add(new UpdateById())
|
||||
.add(new SelectById())
|
||||
.add(new SelectBatchByIds());
|
||||
|
@ -15,84 +15,14 @@
|
||||
*/
|
||||
package com.baomidou.mybatisplus.core.injector.methods;
|
||||
|
||||
import com.baomidou.mybatisplus.core.enums.SqlMethod;
|
||||
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
import org.apache.ibatis.mapping.SqlSource;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.stream.Collectors.joining;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
/**
|
||||
* 根据 ID 集合删除
|
||||
*
|
||||
* @author hubin
|
||||
* @since 2018-04-06
|
||||
* @deprecated 3.5.7 {@link DeleteByIds}
|
||||
*/
|
||||
public class DeleteBatchByIds extends AbstractMethod {
|
||||
|
||||
public DeleteBatchByIds() {
|
||||
this(SqlMethod.DELETE_BATCH_BY_IDS.getMethod());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name 方法名
|
||||
* @since 3.5.0
|
||||
*/
|
||||
public DeleteBatchByIds(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
String sql;
|
||||
SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BATCH_BY_IDS;
|
||||
if (tableInfo.isWithLogicDelete()) {
|
||||
sql = logicDeleteScript(tableInfo, sqlMethod);
|
||||
SqlSource sqlSource = super.createSqlSource(configuration, sql, Object.class);
|
||||
return addUpdateMappedStatement(mapperClass, modelClass, methodName, sqlSource);
|
||||
} else {
|
||||
sqlMethod = SqlMethod.DELETE_BATCH_BY_IDS;
|
||||
sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), tableInfo.getKeyColumn(),
|
||||
SqlScriptUtils.convertForeach(
|
||||
SqlScriptUtils.convertChoose("@org.apache.ibatis.type.SimpleTypeRegistry@isSimpleType(item.getClass())",
|
||||
"#{item}", "#{item." + tableInfo.getKeyProperty() + "}"),
|
||||
COLL, null, "item", COMMA));
|
||||
SqlSource sqlSource = super.createSqlSource(configuration, sql, Object.class);
|
||||
return this.addDeleteMappedStatement(mapperClass, methodName, sqlSource);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param tableInfo 表信息
|
||||
* @return 逻辑删除脚本
|
||||
* @since 3.5.0
|
||||
*/
|
||||
public String logicDeleteScript(TableInfo tableInfo, SqlMethod sqlMethod) {
|
||||
List<TableFieldInfo> fieldInfos = tableInfo.getFieldList().stream()
|
||||
.filter(TableFieldInfo::isWithUpdateFill)
|
||||
.filter(f -> !f.isLogicDelete())
|
||||
.collect(toList());
|
||||
String sqlSet = "SET ";
|
||||
if (CollectionUtils.isNotEmpty(fieldInfos)) {
|
||||
sqlSet += SqlScriptUtils.convertIf(fieldInfos.stream()
|
||||
.map(i -> i.getSqlSet(Constants.ENTITY + StringPool.DOT)).collect(joining(EMPTY)), String.format("%s != null", Constants.ENTITY), true);
|
||||
}
|
||||
sqlSet += StringPool.EMPTY + tableInfo.getLogicDeleteSql(false, false);
|
||||
return String.format(sqlMethod.getSql(), tableInfo.getTableName(),
|
||||
sqlSet, tableInfo.getKeyColumn(), SqlScriptUtils.convertForeach(
|
||||
SqlScriptUtils.convertChoose("@org.apache.ibatis.type.SimpleTypeRegistry@isSimpleType(item.getClass())",
|
||||
"#{item}", "#{item." + tableInfo.getKeyProperty() + "}"),
|
||||
COLL, null, "item", COMMA),
|
||||
tableInfo.getLogicDeleteSql(true, true));
|
||||
}
|
||||
@Deprecated
|
||||
public class DeleteBatchByIds extends DeleteByIds {
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright (c) 2011-2024, baomidou (jobob@qq.com).
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.baomidou.mybatisplus.core.injector.methods;
|
||||
|
||||
import com.baomidou.mybatisplus.core.enums.SqlMethod;
|
||||
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
||||
import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
import org.apache.ibatis.mapping.SqlSource;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.stream.Collectors.joining;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
|
||||
/**
|
||||
* 根据 ID 集合删除
|
||||
*
|
||||
* @author nieqiurong
|
||||
* @since 3.5.7
|
||||
*/
|
||||
public class DeleteByIds extends AbstractMethod {
|
||||
|
||||
public DeleteByIds() {
|
||||
this(SqlMethod.DELETE_BY_IDS.getMethod());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name 方法名
|
||||
* @since 3.5.0
|
||||
*/
|
||||
public DeleteByIds(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MappedStatement injectMappedStatement(Class<?> mapperClass, Class<?> modelClass, TableInfo tableInfo) {
|
||||
String sql;
|
||||
SqlMethod sqlMethod = SqlMethod.LOGIC_DELETE_BY_IDS;
|
||||
if (tableInfo.isWithLogicDelete()) {
|
||||
sql = logicDeleteScript(tableInfo, sqlMethod);
|
||||
SqlSource sqlSource = super.createSqlSource(configuration, sql, Object.class);
|
||||
return addUpdateMappedStatement(mapperClass, modelClass, methodName, sqlSource);
|
||||
} else {
|
||||
sqlMethod = SqlMethod.DELETE_BY_IDS;
|
||||
sql = String.format(sqlMethod.getSql(), tableInfo.getTableName(), tableInfo.getKeyColumn(),
|
||||
SqlScriptUtils.convertForeach(
|
||||
SqlScriptUtils.convertChoose("@org.apache.ibatis.type.SimpleTypeRegistry@isSimpleType(item.getClass())",
|
||||
"#{item}", "#{item." + tableInfo.getKeyProperty() + "}"),
|
||||
COLL, null, "item", COMMA));
|
||||
SqlSource sqlSource = super.createSqlSource(configuration, sql, Object.class);
|
||||
return this.addDeleteMappedStatement(mapperClass, methodName, sqlSource);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param tableInfo 表信息
|
||||
* @return 逻辑删除脚本
|
||||
* @since 3.5.0
|
||||
*/
|
||||
public String logicDeleteScript(TableInfo tableInfo, SqlMethod sqlMethod) {
|
||||
List<TableFieldInfo> fieldInfos = tableInfo.getFieldList().stream()
|
||||
.filter(TableFieldInfo::isWithUpdateFill)
|
||||
.filter(f -> !f.isLogicDelete())
|
||||
.collect(toList());
|
||||
String sqlSet = "SET ";
|
||||
if (CollectionUtils.isNotEmpty(fieldInfos)) {
|
||||
sqlSet += SqlScriptUtils.convertIf(fieldInfos.stream()
|
||||
.map(i -> i.getSqlSet(Constants.ENTITY + StringPool.DOT)).collect(joining(EMPTY)), String.format("%s != null", Constants.ENTITY), true);
|
||||
}
|
||||
sqlSet += StringPool.EMPTY + tableInfo.getLogicDeleteSql(false, false);
|
||||
return String.format(sqlMethod.getSql(), tableInfo.getTableName(),
|
||||
sqlSet, tableInfo.getKeyColumn(), SqlScriptUtils.convertForeach(
|
||||
SqlScriptUtils.convertChoose("@org.apache.ibatis.type.SimpleTypeRegistry@isSimpleType(item.getClass())",
|
||||
"#{item}", "#{item." + tableInfo.getKeyProperty() + "}"),
|
||||
COLL, null, "item", COMMA),
|
||||
tableInfo.getLogicDeleteSql(true, true));
|
||||
}
|
||||
|
||||
}
|
@ -213,7 +213,7 @@ public interface BaseMapper<T> extends Mapper<T> {
|
||||
params.put(Constants.ENTITY, tableInfo.newInstance());
|
||||
}
|
||||
params.put(Constants.COLL, collections);
|
||||
return sqlSession.delete(mapperInterface.getName() + StringPool.DOT + SqlMethod.DELETE_BATCH_BY_IDS.getMethod(), params);
|
||||
return sqlSession.delete(mapperInterface.getName() + StringPool.DOT + SqlMethod.DELETE_BY_IDS.getMethod(), params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -16,7 +16,7 @@
|
||||
package com.baomidou.mybatisplus.extension.injector.methods;
|
||||
|
||||
import com.baomidou.mybatisplus.core.enums.SqlMethod;
|
||||
import com.baomidou.mybatisplus.core.injector.methods.DeleteBatchByIds;
|
||||
import com.baomidou.mybatisplus.core.injector.methods.DeleteByIds;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
@ -46,8 +46,10 @@ import static java.util.stream.Collectors.toList;
|
||||
*
|
||||
* @author nieqiurong
|
||||
* @since 3.5.0
|
||||
* @deprecated 3.5.7 {@link DeleteByIds}
|
||||
*/
|
||||
public class LogicDeleteBatchByIds extends DeleteBatchByIds {
|
||||
@Deprecated
|
||||
public class LogicDeleteBatchByIds extends DeleteByIds {
|
||||
|
||||
public LogicDeleteBatchByIds() {
|
||||
super();
|
||||
|
Loading…
x
Reference in New Issue
Block a user