From 1f3a73056d19191bba14da0ae6b0d1605ce4a137 Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Tue, 29 Oct 2024 09:57:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pom.xml | 4 +- .../yulichang/adapter/v312/Adapter312.java} | 4 +- mybatis-plus-join-adapter/pom.xml | 2 +- mybatis-plus-join-boot-starter/pom.xml | 2 +- mybatis-plus-join-core/pom.xml | 2 +- .../yulichang/adapter/AdapterHelper.java | 8 +- .../wrapper/JoinAbstractLambdaWrapper.java | 9 +- .../wrapper/JoinAbstractWrapper.java | 5 +- .../yulichang/wrapper/interfaces/Nested.java | 131 ++++++++++++++++++ 9 files changed, 145 insertions(+), 22 deletions(-) rename mybatis-plus-join-adapter/{mybatis-plus-join-adapter-v320 => mybatis-plus-join-adapter-v312}/pom.xml (94%) rename mybatis-plus-join-adapter/{mybatis-plus-join-adapter-v320/src/main/java/com/github/yulichang/adapter/v320/Adapter320.java => mybatis-plus-join-adapter-v312/src/main/java/com/github/yulichang/adapter/v312/Adapter312.java} (97%) create mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/Nested.java diff --git a/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v320/pom.xml b/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v312/pom.xml similarity index 94% rename from mybatis-plus-join-adapter/mybatis-plus-join-adapter-v320/pom.xml rename to mybatis-plus-join-adapter/mybatis-plus-join-adapter-v312/pom.xml index fbf176b..c648a7d 100644 --- a/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v320/pom.xml +++ b/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v312/pom.xml @@ -8,9 +8,9 @@ mybatis-plus-join-adapter ${revision} - mybatis-plus-join-adapter-v320 + mybatis-plus-join-adapter-v312 ${revision} - mybatis-plus-join-adapter-v320 + mybatis-plus-join-adapter-v312 An enhanced toolkit of Mybatis-Plus to simplify development. https://github.com/yulichang/mybatis-plus-join diff --git a/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v320/src/main/java/com/github/yulichang/adapter/v320/Adapter320.java b/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v312/src/main/java/com/github/yulichang/adapter/v312/Adapter312.java similarity index 97% rename from mybatis-plus-join-adapter/mybatis-plus-join-adapter-v320/src/main/java/com/github/yulichang/adapter/v320/Adapter320.java rename to mybatis-plus-join-adapter/mybatis-plus-join-adapter-v312/src/main/java/com/github/yulichang/adapter/v312/Adapter312.java index 3b5eca6..624103b 100644 --- a/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v320/src/main/java/com/github/yulichang/adapter/v320/Adapter320.java +++ b/mybatis-plus-join-adapter/mybatis-plus-join-adapter-v312/src/main/java/com/github/yulichang/adapter/v312/Adapter312.java @@ -1,4 +1,4 @@ -package com.github.yulichang.adapter.v320; +package com.github.yulichang.adapter.v312; import com.baomidou.mybatisplus.core.metadata.TableFieldInfo; import com.baomidou.mybatisplus.core.metadata.TableInfo; @@ -24,7 +24,7 @@ import java.util.function.Supplier; * @author yulichang * @since 1.4.3 */ -public class Adapter320 implements IAdapter { +public class Adapter312 implements IAdapter { @Override public boolean mpjHasLogic(TableInfo tableInfo) { diff --git a/mybatis-plus-join-adapter/pom.xml b/mybatis-plus-join-adapter/pom.xml index 0db57ed..f2f2b20 100644 --- a/mybatis-plus-join-adapter/pom.xml +++ b/mybatis-plus-join-adapter/pom.xml @@ -14,7 +14,7 @@ mybatis-plus-join-adapter-base - mybatis-plus-join-adapter-v320 + mybatis-plus-join-adapter-v312 mybatis-plus-join-adapter-v33x mybatis-plus-join-adapter-v3431 mybatis-plus-join-adapter-v352 diff --git a/mybatis-plus-join-boot-starter/pom.xml b/mybatis-plus-join-boot-starter/pom.xml index 79de11f..9bdd18a 100644 --- a/mybatis-plus-join-boot-starter/pom.xml +++ b/mybatis-plus-join-boot-starter/pom.xml @@ -46,7 +46,7 @@ com.baomidou - mybatis-plus-boot-starter + mybatis-plus-spring-boot3-starter ${mybatis.plus.version} provided diff --git a/mybatis-plus-join-core/pom.xml b/mybatis-plus-join-core/pom.xml index 4e143b4..c82d434 100644 --- a/mybatis-plus-join-core/pom.xml +++ b/mybatis-plus-join-core/pom.xml @@ -41,7 +41,7 @@ com.github.yulichang - mybatis-plus-join-adapter-v320 + mybatis-plus-join-adapter-v312 ${revision} diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/adapter/AdapterHelper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/adapter/AdapterHelper.java index a05fe00..e822352 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/adapter/AdapterHelper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/adapter/AdapterHelper.java @@ -3,7 +3,7 @@ package com.github.yulichang.adapter; import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils; import com.github.yulichang.adapter.base.IAdapter; import com.github.yulichang.adapter.base.tookit.VersionUtils; -import com.github.yulichang.adapter.v320.Adapter320; +import com.github.yulichang.adapter.v312.Adapter312; import com.github.yulichang.adapter.v33x.Adapter33x; import com.github.yulichang.adapter.v3431.Adapter3431; import com.github.yulichang.adapter.v355.Adapter355; @@ -33,10 +33,10 @@ public class AdapterHelper { adapter = new Adapter3431(); } else if (VersionUtils.compare(version, "3.3.0") >= 0) { adapter = new Adapter33x(); - } else if (VersionUtils.compare(version, "3.2.0") >= 0) { - adapter = new Adapter320(); + } else if (VersionUtils.compare(version, "3.1.2") >= 0) { + adapter = new Adapter312(); } else { - throw ExceptionUtils.mpe("MPJ需要MP版本3.2.0+,当前MP版本%s", version); + throw ExceptionUtils.mpe("MPJ需要MP版本3.1.2+,当前MP版本%s", version); } } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java index 1c9061e..52f41af 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java @@ -443,14 +443,7 @@ public abstract class JoinAbstractLambdaWrapper Children join(String keyWord, Class clazz, MConsumer> table, String tableAlias, BiConsumer, Children> consumer) { String tabName; if (table != null) { - MPJLambdaWrapper tableWrapper = new MPJLambdaWrapper(null, clazz, SharedString.emptyString(), - paramNameSeq, paramNameValuePairs, new MergeSegments(), new SharedString(this.paramAlias - .getStringValue()), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), - new TableList(), null, null, null, null, ifExists) { - }; - tableWrapper.tableList.setAlias(ConfigProperties.tableAlias); - tableWrapper.tableList.setRootClass(clazz); - + MPJLambdaWrapper tableWrapper = fromInstance(clazz); table.accept(tableWrapper); if (StrUtils.isBlank(tableWrapper.getSqlSelect())) { tableWrapper.selectAll(); diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java index b105ee9..e951763 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java @@ -3,7 +3,6 @@ package com.github.yulichang.wrapper; import com.baomidou.mybatisplus.core.conditions.ISqlSegment; import com.baomidou.mybatisplus.core.conditions.SharedString; import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.interfaces.Nested; import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.core.enums.SqlKeyword; import com.baomidou.mybatisplus.core.enums.SqlLike; @@ -182,9 +181,9 @@ public abstract class JoinAbstractWrapper嵌套

+ *
  • 泛型 Param 是具体需要运行函数的类(也是 wrapper 的子类)
  • + * + * @author hubin miemie HCL + * @since 2017-05-26 + */ +@SuppressWarnings("all") +public interface Nested extends Serializable { + + /** + * AND 嵌套 + *

    + * 例: and(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param consumer 消费函数 + * @return children + */ + default Children and(Consumer consumer) { + return and(true, consumer); + } + + /** + * AND 嵌套 + *

    + * 例: and(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param condition 执行条件 + * @param consumer 消费函数 + * @return children + */ + Children and(boolean condition, Consumer consumer); + + /** + * OR 嵌套 + *

    + * 例: or(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param consumer 消费函数 + * @return children + */ + default Children or(Consumer consumer) { + return or(true, consumer); + } + + /** + * OR 嵌套 + *

    + * 例: or(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param condition 执行条件 + * @param consumer 消费函数 + * @return children + */ + Children or(boolean condition, Consumer consumer); + + /** + * 正常嵌套 不带 AND 或者 OR + *

    + * 例: nested(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param consumer 消费函数 + * @return children + */ + default Children nested(Consumer consumer) { + return nested(true, consumer); + } + + /** + * 正常嵌套 不带 AND 或者 OR + *

    + * 例: nested(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param condition 执行条件 + * @param consumer 消费函数 + * @return children + */ + Children nested(boolean condition, Consumer consumer); + + /** + * not嵌套 + *

    + * 例: not(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param consumer 消费函数 + * @return children + */ + default Children not(Consumer consumer) { + return not(true, consumer); + } + + /** + * not嵌套 + *

    + * 例: not(i -> i.eq("name", "李白").ne("status", "活着")) + *

    + * + * @param condition 执行条件 + * @param consumer 消费函数 + * @return children + */ + Children not(boolean condition, Consumer consumer); +}