From e8f0910049edda6a01413bbd36cc273b400e9e95 Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Mon, 15 May 2023 10:25:04 +0800 Subject: [PATCH] check --- .../yulichang/wrapper/DeleteJoinWrapper.java | 34 +++++++++++++++---- .../com/github/yulichang/test/util/Reset.java | 24 +++++++++++++ 2 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/util/Reset.java diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/DeleteJoinWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/DeleteJoinWrapper.java index f7b2c43..b5e55d0 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/DeleteJoinWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/DeleteJoinWrapper.java @@ -76,6 +76,7 @@ public class DeleteJoinWrapper extends MPJAbstractLambdaWrapper tables = tableList.getAll().stream().map(i -> i.isHasAlias() ? i.getAlias() : (i.getAlias() + i.getIndex())).collect(Collectors.toList()); tables.add(0, this.alias); @@ -105,6 +106,7 @@ public class DeleteJoinWrapper extends MPJAbstractLambdaWrapper LogicInfoUtils.getLogicInfoInvert(i.getIndex(), i.getClazz(), i.isHasAlias(), i.getAlias())).collect(Collectors.joining(StringPool.COMMA)); } else { @@ -119,7 +121,7 @@ public class DeleteJoinWrapper extends MPJAbstractLambdaWrapper extends MPJAbstractLambdaWrapper delete(String... tables) { if (CollectionUtils.isEmpty(deleteTableName)) { @@ -154,26 +159,41 @@ public class DeleteJoinWrapper extends MPJAbstractLambdaWrapper(); } + check(Arrays.asList(deleteClass)); + deleteTableList.addAll(Arrays.asList(deleteClass)); + return typedThis; + } + + private void check(List> classList) { + Class entityClass = getEntityClass(); TableInfo tableInfo = TableHelper.get(entityClass); Asserts.hasTable(tableInfo, entityClass); //检查 boolean mainLogic = AdapterHelper.getTableInfoAdapter().mpjHasLogic(tableInfo); - boolean check = Arrays.stream(deleteClass).allMatch(t -> { + boolean check = classList.stream().allMatch(t -> { TableInfo ti = TableHelper.get(t); Asserts.hasTable(ti, t); return mainLogic == AdapterHelper.getTableInfoAdapter().mpjHasLogic(ti); }); if (!check) { - List> list = Arrays.stream(deleteClass).collect(Collectors.toList()); throw ExceptionUtils.mpe("连表删除只适用于全部表(主表和副表)都是物理删除或全部都是逻辑删除, " + "不支持同时存在物理删除和逻辑删除 [物理删除->(%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)), - 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))); } - deleteTableList.addAll(Arrays.asList(deleteClass)); - return typedThis; + } + + private void check(){ + if (CollectionUtils.isNotEmpty(tableList.getAll())) { + Class entityClass = getEntityClass(); + Assert.notNull(entityClass, "缺少主表类型, 请使用 new MPJLambdaWrapper<>(主表.class) 或 JoinWrappers.lambda(主表.class) 构造方法"); + ArrayList> list = tableList.getAll().stream().map(TableList.Node::getClazz) + .collect(Collectors.toCollection(ArrayList::new)); + list.add(entityClass); + check(list); + } } /** diff --git a/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/util/Reset.java b/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/util/Reset.java new file mode 100644 index 0000000..2f446db --- /dev/null +++ b/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/util/Reset.java @@ -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(); + } +}