mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
check
This commit is contained in:
parent
e53386a8e1
commit
e8f0910049
@ -76,6 +76,7 @@ public class DeleteJoinWrapper<T> extends MPJAbstractLambdaWrapper<T, DeleteJoin
|
|||||||
}
|
}
|
||||||
String delete = null;
|
String delete = null;
|
||||||
if (deleteAll) {
|
if (deleteAll) {
|
||||||
|
check();
|
||||||
List<String> tables = tableList.getAll().stream().map(i -> i.isHasAlias() ? i.getAlias() :
|
List<String> tables = tableList.getAll().stream().map(i -> i.isHasAlias() ? i.getAlias() :
|
||||||
(i.getAlias() + i.getIndex())).collect(Collectors.toList());
|
(i.getAlias() + i.getIndex())).collect(Collectors.toList());
|
||||||
tables.add(0, this.alias);
|
tables.add(0, this.alias);
|
||||||
@ -105,6 +106,7 @@ public class DeleteJoinWrapper<T> extends MPJAbstractLambdaWrapper<T, DeleteJoin
|
|||||||
}
|
}
|
||||||
String delete = null;
|
String delete = null;
|
||||||
if (deleteAll) {
|
if (deleteAll) {
|
||||||
|
check();
|
||||||
delete = tableList.getAll().stream().map(i -> LogicInfoUtils.getLogicInfoInvert(i.getIndex(), i.getClazz(),
|
delete = tableList.getAll().stream().map(i -> LogicInfoUtils.getLogicInfoInvert(i.getIndex(), i.getClazz(),
|
||||||
i.isHasAlias(), i.getAlias())).collect(Collectors.joining(StringPool.COMMA));
|
i.isHasAlias(), i.getAlias())).collect(Collectors.joining(StringPool.COMMA));
|
||||||
} else {
|
} else {
|
||||||
@ -136,6 +138,9 @@ public class DeleteJoinWrapper<T> extends MPJAbstractLambdaWrapper<T, DeleteJoin
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除表
|
* 删除表
|
||||||
|
* 注意!!!
|
||||||
|
* 字符串不支持逻辑删除校验
|
||||||
|
* 也就算说此方法不管副表有没有逻辑删除 都按照主表的方式执行delete或update
|
||||||
*/
|
*/
|
||||||
public DeleteJoinWrapper<T> delete(String... tables) {
|
public DeleteJoinWrapper<T> delete(String... tables) {
|
||||||
if (CollectionUtils.isEmpty(deleteTableName)) {
|
if (CollectionUtils.isEmpty(deleteTableName)) {
|
||||||
@ -154,26 +159,41 @@ public class DeleteJoinWrapper<T> extends MPJAbstractLambdaWrapper<T, DeleteJoin
|
|||||||
if (CollectionUtils.isEmpty(deleteTableList)) {
|
if (CollectionUtils.isEmpty(deleteTableList)) {
|
||||||
deleteTableList = new ArrayList<>();
|
deleteTableList = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
check(Arrays.asList(deleteClass));
|
||||||
|
deleteTableList.addAll(Arrays.asList(deleteClass));
|
||||||
|
return typedThis;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void check(List<Class<?>> classList) {
|
||||||
|
Class<T> entityClass = getEntityClass();
|
||||||
TableInfo tableInfo = TableHelper.get(entityClass);
|
TableInfo tableInfo = TableHelper.get(entityClass);
|
||||||
Asserts.hasTable(tableInfo, entityClass);
|
Asserts.hasTable(tableInfo, entityClass);
|
||||||
//检查
|
//检查
|
||||||
boolean mainLogic = AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo);
|
boolean mainLogic = AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo);
|
||||||
boolean check = Arrays.stream(deleteClass).allMatch(t -> {
|
boolean check = classList.stream().allMatch(t -> {
|
||||||
TableInfo ti = TableHelper.get(t);
|
TableInfo ti = TableHelper.get(t);
|
||||||
Asserts.hasTable(ti, t);
|
Asserts.hasTable(ti, t);
|
||||||
return mainLogic == AdapterHelper.getTableInfoAdapter().mpjHasLogic(ti);
|
return mainLogic == AdapterHelper.getTableInfoAdapter().mpjHasLogic(ti);
|
||||||
});
|
});
|
||||||
if (!check) {
|
if (!check) {
|
||||||
List<Class<?>> list = Arrays.stream(deleteClass).collect(Collectors.toList());
|
|
||||||
throw ExceptionUtils.mpe("连表删除只适用于全部表(主表和副表)都是物理删除或全部都是逻辑删除, " +
|
throw ExceptionUtils.mpe("连表删除只适用于全部表(主表和副表)都是物理删除或全部都是逻辑删除, " +
|
||||||
"不支持同时存在物理删除和逻辑删除 [物理删除->(%s)] [逻辑删除->(%s)]",
|
"不支持同时存在物理删除和逻辑删除 [物理删除->(%s)] [逻辑删除->(%s)]",
|
||||||
list.stream().filter(t -> !AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
classList.stream().filter(t -> !AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
||||||
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)),
|
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)),
|
||||||
list.stream().filter(t -> AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
classList.stream().filter(t -> AdapterHelper.getTableInfoAdapter().mpjHasLogic(TableHelper.get(t)))
|
||||||
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)));
|
.map(Class::getSimpleName).collect(Collectors.joining(StringPool.COMMA)));
|
||||||
}
|
}
|
||||||
deleteTableList.addAll(Arrays.asList(deleteClass));
|
}
|
||||||
return typedThis;
|
|
||||||
|
private void check(){
|
||||||
|
if (CollectionUtils.isNotEmpty(tableList.getAll())) {
|
||||||
|
Class<T> entityClass = getEntityClass();
|
||||||
|
Assert.notNull(entityClass, "缺少主表类型, 请使用 new MPJLambdaWrapper<>(主表.class) 或 JoinWrappers.lambda(主表.class) 构造方法");
|
||||||
|
ArrayList<Class<?>> list = tableList.getAll().stream().map(TableList.Node::getClazz)
|
||||||
|
.collect(Collectors.toCollection(ArrayList::new));
|
||||||
|
list.add(entityClass);
|
||||||
|
check(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.github.yulichang.test.util;
|
||||||
|
|
||||||
|
import com.github.yulichang.toolkit.SpringContentUtils;
|
||||||
|
import org.apache.ibatis.jdbc.ScriptRunner;
|
||||||
|
import org.apache.ibatis.session.SqlSession;
|
||||||
|
import org.mybatis.spring.SqlSessionTemplate;
|
||||||
|
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
|
public class Reset {
|
||||||
|
|
||||||
|
@SuppressWarnings({"DataFlowIssue", "resource"})
|
||||||
|
public static void reset() {
|
||||||
|
SqlSession session = SpringContentUtils.getBean(SqlSessionTemplate.class)
|
||||||
|
.getSqlSessionFactory().openSession(true);
|
||||||
|
ScriptRunner runner = new ScriptRunner(session.getConnection());
|
||||||
|
runner.setLogWriter(null);
|
||||||
|
runner.runScript(new InputStreamReader(
|
||||||
|
Reset.class.getClassLoader().getResourceAsStream("db/schema.sql")));
|
||||||
|
runner.runScript(new InputStreamReader(
|
||||||
|
Reset.class.getClassLoader().getResourceAsStream("db/data.sql")));
|
||||||
|
session.commit();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user