From 8a347e4a23ff9657c736cf2a306b5d8e44d46e06 Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Fri, 5 Jan 2024 11:57:07 +0800 Subject: [PATCH] ifPresent --- .../MybatisPlusJoinAutoConfiguration.java | 12 +- .../MybatisPlusJoinProperties.java | 6 +- .../MybatisPlusJoinIfAbsentConsumer.java | 14 -- .../MybatisPlusJoinIfPresentConsumer.java | 14 ++ ...itional-spring-configuration-metadata.json | 8 +- .../yulichang/config/ConfigProperties.java | 8 +- .../{IfAbsentEnum.java => IfPresentEnum.java} | 4 +- .../yulichang/kt/KtAbstractWrapper.java | 24 +-- .../kt/interfaces/CompareIfAbsent.java | 115 ------------- .../kt/interfaces/CompareIfPresent.java | 115 +++++++++++++ .../query/MPJLambdaQueryWrapper.java | 26 +-- .../yulichang/query/MPJQueryWrapper.java | 26 +-- .../query/interfaces/CompareIfAbsent.java | 151 ------------------ .../query/interfaces/CompareIfPresent.java | 151 ++++++++++++++++++ .../wrapper/JoinAbstractWrapper.java | 26 +-- .../yulichang/wrapper/MPJLambdaWrapper.java | 12 +- ...Enum.java => IfPresentSqlKeyWordEnum.java} | 2 +- .../wrapper/interfaces/CompareIfAbsent.java | 114 ------------- .../wrapper/interfaces/CompareIfPresent.java | 114 +++++++++++++ .../interfaces/CompareStrIfAbsent.java | 65 -------- .../interfaces/CompareStrIfPresent.java | 65 ++++++++ .../solon/plugin/XPluginImpl.java | 12 +- .../test/join/m/CustomWrapperTest.java | 7 +- .../{IfAbsentTest.java => IfPresentTest.java} | 72 ++++----- .../github/yulichang/test/kt/entity/UserDO.kt | 3 + .../yulichang/test/kt/LambdaWrapperTest.kt | 4 +- .../yulichang/test/kt/m/CustomWrapperTest.kt | 14 +- .../src/main/resources/application.yml | 3 +- 28 files changed, 596 insertions(+), 591 deletions(-) delete mode 100644 mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfAbsentConsumer.java create mode 100644 mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfPresentConsumer.java rename mybatis-plus-join-core/src/main/java/com/github/yulichang/config/enums/{IfAbsentEnum.java => IfPresentEnum.java} (89%) delete mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/CompareIfAbsent.java create mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/CompareIfPresent.java delete mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/query/interfaces/CompareIfAbsent.java create mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/query/interfaces/CompareIfPresent.java rename mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/enums/{IfAbsentSqlKeyWordEnum.java => IfPresentSqlKeyWordEnum.java} (87%) delete mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareIfAbsent.java create mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareIfPresent.java delete mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfAbsent.java create mode 100644 mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfPresent.java rename mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/{IfAbsentTest.java => IfPresentTest.java} (53%) diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java index 0a51a03..66bf5c0 100644 --- a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java +++ b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinAutoConfiguration.java @@ -3,7 +3,7 @@ package com.github.yulichang.autoconfigure; import com.baomidou.mybatisplus.autoconfigure.MybatisPlusLanguageDriverAutoConfiguration; import com.baomidou.mybatisplus.core.injector.ISqlInjector; import com.github.yulichang.autoconfigure.conditional.JoinSqlInjectorCondition; -import com.github.yulichang.autoconfigure.consumer.MybatisPlusJoinIfAbsentConsumer; +import com.github.yulichang.autoconfigure.consumer.MybatisPlusJoinIfPresentConsumer; import com.github.yulichang.autoconfigure.consumer.MybatisPlusJoinPropertiesConsumer; import com.github.yulichang.config.ConfigProperties; import com.github.yulichang.config.MPJInterceptorConfig; @@ -11,7 +11,7 @@ import com.github.yulichang.extension.mapping.config.MappingConfig; import com.github.yulichang.injector.MPJSqlInjector; import com.github.yulichang.interceptor.MPJInterceptor; import com.github.yulichang.toolkit.SpringContentUtils; -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.slf4j.Logger; @@ -63,7 +63,7 @@ public class MybatisPlusJoinAutoConfiguration { public MybatisPlusJoinAutoConfiguration(MybatisPlusJoinProperties properties, ObjectProvider propertiesConsumers, - ObjectProvider ifAbsentConsumers) { + ObjectProvider ifPresentConsumers) { this.properties = Optional.ofNullable(propertiesConsumers.getIfAvailable()).map(c -> c.config(properties)).orElse(properties); ConfigProperties.banner = this.properties.getBanner(); ConfigProperties.subTableLogic = this.properties.getSubTableLogic(); @@ -72,9 +72,9 @@ public class MybatisPlusJoinAutoConfiguration { ConfigProperties.joinPrefix = this.properties.getJoinPrefix(); ConfigProperties.logicDelType = this.properties.getLogicDelType(); ConfigProperties.mappingMaxCount = this.properties.getMappingMaxCount(); - ConfigProperties.ifAbsent = Optional.ofNullable(ifAbsentConsumers.getIfAvailable()) - .map(m -> (BiPredicate) m) - .orElse((val, key) -> this.properties.getIfAbsent().test(val)); + ConfigProperties.ifPresent = Optional.ofNullable(ifPresentConsumers.getIfAvailable()) + .map(m -> (BiPredicate) m) + .orElse((val, key) -> this.properties.getIfPresent().test(val)); info("mybatis plus join properties config complete"); } diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java index e30fe5a..5948c63 100644 --- a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java +++ b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/MybatisPlusJoinProperties.java @@ -1,6 +1,6 @@ package com.github.yulichang.autoconfigure; -import com.github.yulichang.config.enums.IfAbsentEnum; +import com.github.yulichang.config.enums.IfPresentEnum; import com.github.yulichang.config.enums.LogicDelTypeEnum; import lombok.Data; import lombok.experimental.Accessors; @@ -58,7 +58,7 @@ public class MybatisPlusJoinProperties { private String subQueryAlias = "st"; /** - * Wrapper ifAbsent 判断策略 + * Wrapper ifPresent 判断策略 *

* NOT_NULL 非null *

@@ -66,5 +66,5 @@ public class MybatisPlusJoinProperties { *

* NOT_BLANK 非空白字符串 例: "" -> false, " " -> false, "\r" -> false, "abc" -> true ... */ - private IfAbsentEnum ifAbsent = IfAbsentEnum.NOT_EMPTY; + private IfPresentEnum ifPresent = IfPresentEnum.NOT_EMPTY; } diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfAbsentConsumer.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfAbsentConsumer.java deleted file mode 100644 index 3e2287c..0000000 --- a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfAbsentConsumer.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.github.yulichang.autoconfigure.consumer; - -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; - -import java.util.function.BiPredicate; - -/** - * 自定义IfAbsent策略 - * - * @author yulichang - * @since 1.4.9 - */ -public interface MybatisPlusJoinIfAbsentConsumer extends BiPredicate { -} diff --git a/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfPresentConsumer.java b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfPresentConsumer.java new file mode 100644 index 0000000..d5c4fe2 --- /dev/null +++ b/mybatis-plus-join-boot-starter/src/main/java/com/github/yulichang/autoconfigure/consumer/MybatisPlusJoinIfPresentConsumer.java @@ -0,0 +1,14 @@ +package com.github.yulichang.autoconfigure.consumer; + +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; + +import java.util.function.BiPredicate; + +/** + * 自定义IfPresent策略 + * + * @author yulichang + * @since 1.4.9 + */ +public interface MybatisPlusJoinIfPresentConsumer extends BiPredicate { +} diff --git a/mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json index df4fbf5..b5e4f71 100644 --- a/mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/mybatis-plus-join-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -57,10 +57,10 @@ "description": "子查询表别名." }, { - "name": "mybatis-plus-join.if-absent", - "defaultValue": "com.github.yulichang.config.enums.IfAbsentEnum.NOT_EMPTY", - "type": "com.github.yulichang.config.enums.IfAbsentEnum", - "description": "IfAbsent方法判断策略,如需自定义请用@Bean形式MybatisPlusJoinIfAbsent." + "name": "mybatis-plus-join.if-present", + "defaultValue": "com.github.yulichang.config.enums.IfPresentEnum.NOT_EMPTY", + "type": "com.github.yulichang.config.enums.IfPresentEnum", + "description": "IfPresent方法判断策略,如需自定义请用@Bean形式MybatisPlusJoinIfPresentConsumer." } ] } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/ConfigProperties.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/ConfigProperties.java index 64b2a9a..d2e07ba 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/ConfigProperties.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/ConfigProperties.java @@ -2,9 +2,9 @@ package com.github.yulichang.config; import com.github.yulichang.adapter.AdapterHelper; import com.github.yulichang.adapter.base.ITableInfoAdapter; -import com.github.yulichang.config.enums.IfAbsentEnum; +import com.github.yulichang.config.enums.IfPresentEnum; import com.github.yulichang.config.enums.LogicDelTypeEnum; -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; import java.util.function.BiPredicate; @@ -51,7 +51,7 @@ public class ConfigProperties { */ public static String subQueryAlias = "st"; /** - * Wrapper ifAbsent 判断策略 + * Wrapper ifPresent 判断策略 *

* NOT_NULL 非null *

@@ -59,5 +59,5 @@ public class ConfigProperties { *

* NOT_BLANK 非空白字符串 例: "" -> false, " " -> false, "\r" -> false, "abc" -> true ... */ - public static BiPredicate ifAbsent = (val, key) -> IfAbsentEnum.NOT_EMPTY.test(val); + public static BiPredicate ifPresent = (val, key) -> IfPresentEnum.NOT_EMPTY.test(val); } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/enums/IfAbsentEnum.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/enums/IfPresentEnum.java similarity index 89% rename from mybatis-plus-join-core/src/main/java/com/github/yulichang/config/enums/IfAbsentEnum.java rename to mybatis-plus-join-core/src/main/java/com/github/yulichang/config/enums/IfPresentEnum.java index 717567e..913aa74 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/enums/IfAbsentEnum.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/config/enums/IfPresentEnum.java @@ -11,7 +11,7 @@ import java.util.function.Predicate; * @author yulichang * @since 1.4.9 */ -public enum IfAbsentEnum implements Predicate { +public enum IfPresentEnum implements Predicate { /** * 非null @@ -28,7 +28,7 @@ public enum IfAbsentEnum implements Predicate { private final Predicate predicate; - IfAbsentEnum(Predicate predicate) { + IfPresentEnum(Predicate predicate) { this.predicate = predicate; } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtAbstractWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtAbstractWrapper.java index ca03000..ed11efd 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtAbstractWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/KtAbstractWrapper.java @@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils; import com.baomidou.mybatisplus.core.toolkit.sql.StringEscape; import com.github.yulichang.config.ConfigProperties; -import com.github.yulichang.kt.interfaces.CompareIfAbsent; +import com.github.yulichang.kt.interfaces.CompareIfPresent; import com.github.yulichang.kt.interfaces.Func; import com.github.yulichang.kt.interfaces.OnCompare; import com.github.yulichang.toolkit.KtUtils; @@ -20,9 +20,9 @@ import com.github.yulichang.toolkit.MPJSqlInjectionUtils; import com.github.yulichang.toolkit.Ref; import com.github.yulichang.toolkit.TableList; import com.github.yulichang.toolkit.sql.SqlScriptUtils; -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; import com.github.yulichang.wrapper.enums.PrefixEnum; -import com.github.yulichang.wrapper.interfaces.CompareStrIfAbsent; +import com.github.yulichang.wrapper.interfaces.CompareStrIfPresent; import com.github.yulichang.wrapper.interfaces.FuncStr; import com.github.yulichang.wrapper.interfaces.Join; import kotlin.reflect.KProperty; @@ -47,8 +47,8 @@ import static java.util.stream.Collectors.joining; */ @SuppressWarnings({"unused", "unchecked", "DuplicatedCode"}) public abstract class KtAbstractWrapper> extends Wrapper - implements CompareIfAbsent, Nested, Join, Func, OnCompare, - CompareStrIfAbsent, FuncStr { + implements CompareIfPresent, Nested, Join, Func, OnCompare, + CompareStrIfPresent, FuncStr { /** * 占位符 @@ -125,10 +125,10 @@ public abstract class KtAbstractWrapper ifAbsent = ConfigProperties.ifAbsent; + protected BiPredicate ifPresent = ConfigProperties.ifPresent; @Override public T getEntity() { @@ -181,13 +181,13 @@ public abstract class KtAbstractWrapper ifAbsent) { - this.ifAbsent = ifAbsent; + public Children setIfPresent(BiPredicate ifPresent) { + this.ifPresent = ifPresent; return typedThis; } - public Children setIfAbsent(Predicate ifAbsent) { - this.ifAbsent = (o, k) -> ifAbsent.test(o); + public Children setIfPresent(Predicate ifPresent) { + this.ifPresent = (o, k) -> ifPresent.test(o); return typedThis; } @@ -659,7 +659,7 @@ public abstract class KtAbstractWrapper extends Compare { - - BiPredicate getIfAbsent(); - - default Children eqIfAbsent(KProperty column, Object val) { - return eq(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.EQ), null, column, val); - } - - default Children eqIfAbsent(String alias, KProperty column, Object val) { - return eq(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.EQ), alias, column, val); - } - - default Children neIfAbsent(KProperty column, Object val) { - return ne(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NE), null, column, val); - } - - default Children neIfAbsent(String alias, KProperty column, Object val) { - return ne(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NE), alias, column, val); - } - - default Children gtIfAbsent(KProperty column, Object val) { - return gt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GT), null, column, val); - } - - default Children gtIfAbsent(String alias, KProperty column, Object val) { - return gt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GT), alias, column, val); - } - - - default Children geIfAbsent(KProperty column, Object val) { - return ge(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GE), null, column, val); - } - - default Children geIfAbsent(String alias, KProperty column, Object val) { - return ge(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GE), alias, column, val); - } - - default Children ltIfAbsent(KProperty column, Object val) { - return lt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LT), null, column, val); - } - - default Children ltIfAbsent(String alias, KProperty column, Object val) { - return lt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LT), alias, column, val); - } - - default Children leIfAbsent(KProperty column, Object val) { - return le(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LE), null, column, val); - } - - default Children leIfAbsent(String alias, KProperty column, Object val) { - return le(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LE), alias, column, val); - } - - default Children likeIfAbsent(KProperty column, Object val) { - return like(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE), null, column, val); - } - - default Children likeIfAbsent(String alisa, KProperty column, Object val) { - return like(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE), alisa, column, val); - } - - default Children notLikeIfAbsent(KProperty column, Object val) { - return notLike(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE), null, column, val); - } - - default Children notLikeIfAbsent(String alias, KProperty column, Object val) { - return notLike(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE), alias, column, val); - } - - default Children likeLeftIfAbsent(KProperty column, Object val) { - return likeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_LEFT), null, column, val); - } - - default Children likeLeftIfAbsent(String alias, KProperty column, Object val) { - return likeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_LEFT), alias, column, val); - } - - default Children notLikeLeftIfAbsent(KProperty column, Object val) { - return notLikeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_LEFT), null, column, val); - } - - default Children notLikeLeftIfAbsent(String alias, KProperty column, Object val) { - return notLikeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_LEFT), alias, column, val); - } - - default Children likeRightIfAbsent(KProperty column, Object val) { - return likeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_RIGHT), null, column, val); - } - - default Children likeRightIfAbsent(String alias, KProperty column, Object val) { - return likeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_RIGHT), alias, column, val); - } - - default Children notLikeRightIfAbsent(KProperty column, Object val) { - return notLikeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_RIGHT), null, column, val); - } - - default Children notLikeRightIfAbsent(String alias, KProperty column, Object val) { - return notLikeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_RIGHT), alias, column, val); - } -} diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/CompareIfPresent.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/CompareIfPresent.java new file mode 100644 index 0000000..ab1a0a6 --- /dev/null +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/kt/interfaces/CompareIfPresent.java @@ -0,0 +1,115 @@ +package com.github.yulichang.kt.interfaces; + +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; +import kotlin.reflect.KProperty; + +import java.util.function.BiPredicate; + +/** + * ifPresent + * + * @author yulichang + * @since 1.4.9 + */ +@SuppressWarnings("unused") +public interface CompareIfPresent extends Compare { + + BiPredicate getIfPresent(); + + default Children eqIfPresent(KProperty column, Object val) { + return eq(getIfPresent().test(val, IfPresentSqlKeyWordEnum.EQ), null, column, val); + } + + default Children eqIfPresent(String alias, KProperty column, Object val) { + return eq(getIfPresent().test(val, IfPresentSqlKeyWordEnum.EQ), alias, column, val); + } + + default Children neIfPresent(KProperty column, Object val) { + return ne(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NE), null, column, val); + } + + default Children neIfPresent(String alias, KProperty column, Object val) { + return ne(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NE), alias, column, val); + } + + default Children gtIfPresent(KProperty column, Object val) { + return gt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GT), null, column, val); + } + + default Children gtIfPresent(String alias, KProperty column, Object val) { + return gt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GT), alias, column, val); + } + + + default Children geIfPresent(KProperty column, Object val) { + return ge(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GE), null, column, val); + } + + default Children geIfPresent(String alias, KProperty column, Object val) { + return ge(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GE), alias, column, val); + } + + default Children ltIfPresent(KProperty column, Object val) { + return lt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LT), null, column, val); + } + + default Children ltIfPresent(String alias, KProperty column, Object val) { + return lt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LT), alias, column, val); + } + + default Children leIfPresent(KProperty column, Object val) { + return le(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LE), null, column, val); + } + + default Children leIfPresent(String alias, KProperty column, Object val) { + return le(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LE), alias, column, val); + } + + default Children likeIfPresent(KProperty column, Object val) { + return like(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE), null, column, val); + } + + default Children likeIfPresent(String alisa, KProperty column, Object val) { + return like(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE), alisa, column, val); + } + + default Children notLikeIfPresent(KProperty column, Object val) { + return notLike(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE), null, column, val); + } + + default Children notLikeIfPresent(String alias, KProperty column, Object val) { + return notLike(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE), alias, column, val); + } + + default Children likeLeftIfPresent(KProperty column, Object val) { + return likeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_LEFT), null, column, val); + } + + default Children likeLeftIfPresent(String alias, KProperty column, Object val) { + return likeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_LEFT), alias, column, val); + } + + default Children notLikeLeftIfPresent(KProperty column, Object val) { + return notLikeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_LEFT), null, column, val); + } + + default Children notLikeLeftIfPresent(String alias, KProperty column, Object val) { + return notLikeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_LEFT), alias, column, val); + } + + default Children likeRightIfPresent(KProperty column, Object val) { + return likeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_RIGHT), null, column, val); + } + + default Children likeRightIfPresent(String alias, KProperty column, Object val) { + return likeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_RIGHT), alias, column, val); + } + + default Children notLikeRightIfPresent(KProperty column, Object val) { + return notLikeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_RIGHT), null, column, val); + } + + default Children notLikeRightIfPresent(String alias, KProperty column, Object val) { + return notLikeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_RIGHT), alias, column, val); + } +} diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java index ac13e59..97f880d 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/MPJLambdaQueryWrapper.java @@ -9,12 +9,12 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.github.yulichang.config.ConfigProperties; -import com.github.yulichang.query.interfaces.CompareIfAbsent; +import com.github.yulichang.query.interfaces.CompareIfPresent; import com.github.yulichang.query.interfaces.StringJoin; import com.github.yulichang.toolkit.Asserts; import com.github.yulichang.toolkit.TableHelper; import com.github.yulichang.toolkit.ThrowOptional; -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; import lombok.Getter; import java.io.UnsupportedEncodingException; @@ -36,7 +36,7 @@ import java.util.stream.Collectors; @SuppressWarnings("unused") public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper> implements Query, T, SFunction>, StringJoin, T>, - CompareIfAbsent, SFunction> { + CompareIfPresent, SFunction> { /** * 查询字段 @@ -78,7 +78,7 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper tableNameFunc; @Getter - private BiPredicate ifAbsent = ConfigProperties.ifAbsent; + private BiPredicate ifPresent = ConfigProperties.ifPresent; /** * 不建议直接 new 该实例,使用 Wrappers.lambdaQuery(entity) @@ -94,7 +94,7 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper paramNameValuePairs, MergeSegments mergeSegments, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst, List selectColumns, List ignoreColumns, boolean selectDistinct, - BiPredicate ifAbsent) { + BiPredicate ifPresent) { super.setEntity(entity); setEntityClass(entityClass); this.paramNameSeq = paramNameSeq; @@ -108,7 +108,7 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper extends AbstractLambdaWrapper stringQuery() { return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, expression, sqlSelect, from, lastSql, sqlComment, sqlFirst, selectColumns, ignoreColumns, - selectDistinct, ifAbsent); + selectDistinct, ifPresent); } @Override @@ -337,13 +337,13 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper setIfAbsent(BiPredicate ifAbsent) { - this.ifAbsent = ifAbsent; + public MPJLambdaQueryWrapper setIfPresent(BiPredicate ifPresent) { + this.ifPresent = ifPresent; return typedThis; } - public MPJLambdaQueryWrapper setIfAbsent(Predicate ifAbsent) { - this.ifAbsent = (o, k) -> ifAbsent.test(o); + public MPJLambdaQueryWrapper setIfPresent(Predicate ifPresent) { + this.ifPresent = (o, k) -> ifPresent.test(o); return typedThis; } @@ -355,7 +355,7 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper instance() { return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), null, null, paramNameSeq, paramNameValuePairs, new MergeSegments(), SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), - null, null, selectDistinct, ifAbsent); + null, null, selectDistinct, ifPresent); } @Override @@ -391,7 +391,7 @@ public class MPJLambdaQueryWrapper extends AbstractLambdaWrapper extends AbstractWrapper> implements Query, T, String>, StringJoin, T>, Chain, - CompareIfAbsent, String> { + CompareIfPresent, String> { /** * 查询字段 @@ -91,7 +91,7 @@ public class MPJQueryWrapper extends AbstractWrapper ifAbsent = ConfigProperties.ifAbsent; + private BiPredicate ifPresent = ConfigProperties.ifPresent; public MPJQueryWrapper() { @@ -124,7 +124,7 @@ public class MPJQueryWrapper extends AbstractWrapper selectColumns, List ignoreColumns, boolean selectDistinct, - BiPredicate ifAbsent) { + BiPredicate ifPresent) { super.setEntity(entity); setEntityClass(entityClass); this.paramNameSeq = paramNameSeq; @@ -138,7 +138,7 @@ public class MPJQueryWrapper extends AbstractWrapper extends AbstractWrapper setIfAbsent(BiPredicate ifAbsent) { - this.ifAbsent = ifAbsent; + public MPJQueryWrapper setIfPresent(BiPredicate ifPresent) { + this.ifPresent = ifPresent; return this; } - public MPJQueryWrapper setIfAbsent(Predicate ifAbsent) { - this.ifAbsent = (o, k) -> ifAbsent.test(o); + public MPJQueryWrapper setIfPresent(Predicate ifPresent) { + this.ifPresent = (o, k) -> ifPresent.test(o); return this; } @@ -354,7 +354,7 @@ public class MPJQueryWrapper extends AbstractWrapper lambda() { return new MPJLambdaQueryWrapper<>(getEntity(), getEntityClass(), from, sqlSelect, paramNameSeq, paramNameValuePairs, - expression, lastSql, sqlComment, getSqlFirstField(), selectColumns, ignoreColumns, selectDistinct, ifAbsent); + expression, lastSql, sqlComment, getSqlFirstField(), selectColumns, ignoreColumns, selectDistinct, ifPresent); } @Override @@ -391,7 +391,7 @@ public class MPJQueryWrapper extends AbstractWrapper instance() { return new MPJQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(), null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), - null, null, selectDistinct, ifAbsent); + null, null, selectDistinct, ifPresent); } @@ -402,7 +402,7 @@ public class MPJQueryWrapper extends AbstractWrapper比较值

- * - * @author yulichang - * @since 1.4.9 - */ -@SuppressWarnings("unused") -public interface CompareIfAbsent extends Compare { - - BiPredicate getIfAbsent(); - - /** - * 等于 = - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children eqIfAbsent(R column, Object val) { - return eq(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.EQ), column, val); - } - - /** - * 不等于 <> - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children neIfAbsent(R column, Object val) { - return ne(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NE), column, val); - } - - /** - * 大于 > - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children gtIfAbsent(R column, Object val) { - return gt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GT), column, val); - } - - /** - * 大于等于 >= - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children geIfAbsent(R column, Object val) { - return ge(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GE), column, val); - } - - /** - * 小于 < - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children ltIfAbsent(R column, Object val) { - return lt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LT), column, val); - } - - /** - * 小于等于 <= - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children leIfAbsent(R column, Object val) { - return le(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LE), column, val); - } - - /** - * LIKE '%值%' - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children likeIfAbsent(R column, Object val) { - return like(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE), column, val); - } - - /** - * NOT LIKE '%值%' - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children notLikeIfAbsent(R column, Object val) { - return notLike(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE), column, val); - } - - /** - * NOT LIKE '%值' - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children notLikeLeftIfAbsent(R column, Object val) { - return notLikeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_LEFT), column, val); - } - - /** - * NOT LIKE '值%' - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children notLikeRightIfAbsent(R column, Object val) { - return notLikeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_RIGHT), column, val); - } - - /** - * LIKE '%值' - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children likeLeftIfAbsent(R column, Object val) { - return likeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_LEFT), column, val); - } - - /** - * LIKE '值%' - * - * @param column 字段 - * @param val 值 - * @return children - */ - default Children likeRightIfAbsent(R column, Object val) { - return likeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_RIGHT), column, val); - } -} diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/interfaces/CompareIfPresent.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/interfaces/CompareIfPresent.java new file mode 100644 index 0000000..06b9066 --- /dev/null +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/query/interfaces/CompareIfPresent.java @@ -0,0 +1,151 @@ +package com.github.yulichang.query.interfaces; + +import com.baomidou.mybatisplus.core.conditions.interfaces.Compare; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; + +import java.util.function.BiPredicate; + +/** + * 查询条件封装 + *

比较值

+ * + * @author yulichang + * @since 1.4.9 + */ +@SuppressWarnings("unused") +public interface CompareIfPresent extends Compare { + + BiPredicate getIfPresent(); + + /** + * 等于 = + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children eqIfPresent(R column, Object val) { + return eq(getIfPresent().test(val, IfPresentSqlKeyWordEnum.EQ), column, val); + } + + /** + * 不等于 <> + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children neIfPresent(R column, Object val) { + return ne(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NE), column, val); + } + + /** + * 大于 > + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children gtIfPresent(R column, Object val) { + return gt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GT), column, val); + } + + /** + * 大于等于 >= + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children geIfPresent(R column, Object val) { + return ge(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GE), column, val); + } + + /** + * 小于 < + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children ltIfPresent(R column, Object val) { + return lt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LT), column, val); + } + + /** + * 小于等于 <= + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children leIfPresent(R column, Object val) { + return le(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LE), column, val); + } + + /** + * LIKE '%值%' + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children likeIfPresent(R column, Object val) { + return like(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE), column, val); + } + + /** + * NOT LIKE '%值%' + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children notLikeIfPresent(R column, Object val) { + return notLike(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE), column, val); + } + + /** + * NOT LIKE '%值' + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children notLikeLeftIfPresent(R column, Object val) { + return notLikeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_LEFT), column, val); + } + + /** + * NOT LIKE '值%' + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children notLikeRightIfPresent(R column, Object val) { + return notLikeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_RIGHT), column, val); + } + + /** + * LIKE '%值' + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children likeLeftIfPresent(R column, Object val) { + return likeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_LEFT), column, val); + } + + /** + * LIKE '值%' + * + * @param column 字段 + * @param val 值 + * @return children + */ + default Children likeRightIfPresent(R column, Object val) { + return likeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_RIGHT), column, val); + } +} 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 7e97c4d..785c690 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 @@ -18,7 +18,7 @@ import com.github.yulichang.toolkit.MPJSqlInjectionUtils; import com.github.yulichang.toolkit.Ref; import com.github.yulichang.toolkit.TableList; import com.github.yulichang.toolkit.sql.SqlScriptUtils; -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; import com.github.yulichang.wrapper.enums.PrefixEnum; import com.github.yulichang.wrapper.interfaces.*; import lombok.Getter; @@ -42,8 +42,8 @@ import static java.util.stream.Collectors.joining; */ @SuppressWarnings({"unchecked", "unused", "DuplicatedCode"}) public abstract class JoinAbstractWrapper> extends Wrapper - implements CompareIfAbsent, Nested, Join, Func, OnCompare, - CompareStrIfAbsent, FuncStr { + implements CompareIfPresent, Nested, Join, Func, OnCompare, + CompareStrIfPresent, FuncStr { /** * 占位符 @@ -120,10 +120,10 @@ public abstract class JoinAbstractWrapper ifAbsent = ConfigProperties.ifAbsent; + protected BiPredicate ifPresent = ConfigProperties.ifPresent; @Override public T getEntity() { @@ -176,20 +176,20 @@ public abstract class JoinAbstractWrapper ifAbsent) { - this.ifAbsent = ifAbsent; + public Children setIfPresent(BiPredicate ifPresent) { + this.ifPresent = ifPresent; return typedThis; } /** - * 设置 ifAbsent - * .setIfAbsent(val -> val != null && StringUtils.isNotBlank(val)) + * 设置 ifPresent + * .ifPresent(val -> val != null && StringUtils.isNotBlank(val)) * - * @param ifAbsent 判断 + * @param ifPresent 判断 * @return Children */ - public Children setIfAbsent(Predicate ifAbsent) { - this.ifAbsent = (obj, key) -> ifAbsent.test(obj); + public Children setIfPresent(Predicate ifPresent) { + this.ifPresent = (obj, key) -> ifPresent.test(obj); return typedThis; } @@ -773,7 +773,7 @@ public abstract class JoinAbstractWrapper extends JoinAbstractLambdaWrapper paramNameValuePairs, MergeSegments mergeSegments, SharedString paramAlias, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst, TableList tableList, Integer index, String keyWord, Class joinClass, String tableName, - BiPredicate ifAbsent) { + BiPredicate ifPresent) { super.setEntity(entity); super.setEntityClass(entityClass); this.paramNameSeq = paramNameSeq; @@ -142,7 +142,7 @@ public class MPJLambdaWrapper extends JoinAbstractLambdaWrapper extends JoinAbstractLambdaWrapper wrapper = 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, ifAbsent) { + new TableList(), null, null, null, null, ifPresent) { }; wrapper.tableList.setAlias(st); wrapper.tableList.setRootClass(clazz); @@ -406,7 +406,7 @@ public class MPJLambdaWrapper extends JoinAbstractLambdaWrapper instance(Integer index, String keyWord, Class joinClass, String tableName) { return new MPJLambdaWrapper<>(getEntity(), getEntityClass(), null, paramNameSeq, paramNameValuePairs, new MergeSegments(), this.paramAlias, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString(), - this.tableList, index, keyWord, joinClass, tableName, ifAbsent); + this.tableList, index, keyWord, joinClass, tableName, ifPresent); } @Override @@ -419,6 +419,6 @@ public class MPJLambdaWrapper extends JoinAbstractLambdaWrapper extends Compare { - - BiPredicate getIfAbsent(); - - default Children eqIfAbsent(SFunction column, Object val) { - return eq(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.EQ), null, column, val); - } - - default Children eqIfAbsent(String alias, SFunction column, Object val) { - return eq(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.EQ), alias, column, val); - } - - default Children neIfAbsent(SFunction column, Object val) { - return ne(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NE), null, column, val); - } - - default Children neIfAbsent(String alias, SFunction column, Object val) { - return ne(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NE), alias, column, val); - } - - default Children gtIfAbsent(SFunction column, Object val) { - return gt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GT), null, column, val); - } - - default Children gtIfAbsent(String alias, SFunction column, Object val) { - return gt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GT), alias, column, val); - } - - default Children geIfAbsent(SFunction column, Object val) { - return ge(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GE), null, column, val); - } - - default Children geIfAbsent(String alias, SFunction column, Object val) { - return ge(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GE), alias, column, val); - } - - default Children ltIfAbsent(SFunction column, Object val) { - return lt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LT), null, column, val); - } - - default Children ltIfAbsent(String alias, SFunction column, Object val) { - return lt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LT), alias, column, val); - } - - default Children leIfAbsent(SFunction column, Object val) { - return le(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LE), null, column, val); - } - - default Children leIfAbsent(String alias, SFunction column, Object val) { - return le(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LE), alias, column, val); - } - - default Children likeIfAbsent(SFunction column, Object val) { - return like(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE), null, column, val); - } - - default Children likeIfAbsent(String alias, SFunction column, Object val) { - return like(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE), alias, column, val); - } - - default Children notLikeIfAbsent(SFunction column, Object val) { - return notLike(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE), null, column, val); - } - - default Children notLikeIfAbsent(String alias, SFunction column, Object val) { - return notLike(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE), alias, column, val); - } - - default Children likeLeftIfAbsent(SFunction column, Object val) { - return likeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_LEFT), null, column, val); - } - - default Children likeLeftIfAbsent(String alias, SFunction column, Object val) { - return likeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_LEFT), alias, column, val); - } - - default Children notLikeLeftIfAbsent(SFunction column, Object val) { - return notLikeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_LEFT), null, column, val); - } - - default Children notLikeLeftIfAbsent(String alias, SFunction column, Object val) { - return notLikeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_LEFT), alias, column, val); - } - - default Children likeRightIfAbsent(SFunction column, Object val) { - return likeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_RIGHT), null, column, val); - } - - default Children likeRightIfAbsent(String alias, SFunction column, Object val) { - return likeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_RIGHT), alias, column, val); - } - - default Children notLikeRightIfAbsent(SFunction column, Object val) { - return notLikeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_RIGHT), null, column, val); - } - - default Children notLikeRightIfAbsent(String alias, SFunction column, Object val) { - return notLikeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_RIGHT), alias, column, val); - } -} diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareIfPresent.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareIfPresent.java new file mode 100644 index 0000000..28c493f --- /dev/null +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareIfPresent.java @@ -0,0 +1,114 @@ +package com.github.yulichang.wrapper.interfaces; + +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; + +import java.util.function.BiPredicate; + +/** + * {@link com.baomidou.mybatisplus.core.conditions.interfaces.Compare} + * + * @author yulichang + * @since 1.4.9 + */ +@SuppressWarnings("unused") +public interface CompareIfPresent extends Compare { + + BiPredicate getIfPresent(); + + default Children eqIfPresent(SFunction column, Object val) { + return eq(getIfPresent().test(val, IfPresentSqlKeyWordEnum.EQ), null, column, val); + } + + default Children eqIfPresent(String alias, SFunction column, Object val) { + return eq(getIfPresent().test(val, IfPresentSqlKeyWordEnum.EQ), alias, column, val); + } + + default Children neIfPresent(SFunction column, Object val) { + return ne(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NE), null, column, val); + } + + default Children neIfPresent(String alias, SFunction column, Object val) { + return ne(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NE), alias, column, val); + } + + default Children gtIfPresent(SFunction column, Object val) { + return gt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GT), null, column, val); + } + + default Children gtIfPresent(String alias, SFunction column, Object val) { + return gt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GT), alias, column, val); + } + + default Children geIfPresent(SFunction column, Object val) { + return ge(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GE), null, column, val); + } + + default Children geIfPresent(String alias, SFunction column, Object val) { + return ge(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GE), alias, column, val); + } + + default Children ltIfPresent(SFunction column, Object val) { + return lt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LT), null, column, val); + } + + default Children ltIfPresent(String alias, SFunction column, Object val) { + return lt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LT), alias, column, val); + } + + default Children leIfPresent(SFunction column, Object val) { + return le(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LE), null, column, val); + } + + default Children leIfPresent(String alias, SFunction column, Object val) { + return le(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LE), alias, column, val); + } + + default Children likeIfPresent(SFunction column, Object val) { + return like(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE), null, column, val); + } + + default Children likeIfPresent(String alias, SFunction column, Object val) { + return like(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE), alias, column, val); + } + + default Children notLikeIfPresent(SFunction column, Object val) { + return notLike(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE), null, column, val); + } + + default Children notLikeIfPresent(String alias, SFunction column, Object val) { + return notLike(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE), alias, column, val); + } + + default Children likeLeftIfPresent(SFunction column, Object val) { + return likeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_LEFT), null, column, val); + } + + default Children likeLeftIfPresent(String alias, SFunction column, Object val) { + return likeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_LEFT), alias, column, val); + } + + default Children notLikeLeftIfPresent(SFunction column, Object val) { + return notLikeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_LEFT), null, column, val); + } + + default Children notLikeLeftIfPresent(String alias, SFunction column, Object val) { + return notLikeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_LEFT), alias, column, val); + } + + default Children likeRightIfPresent(SFunction column, Object val) { + return likeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_RIGHT), null, column, val); + } + + default Children likeRightIfPresent(String alias, SFunction column, Object val) { + return likeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_RIGHT), alias, column, val); + } + + default Children notLikeRightIfPresent(SFunction column, Object val) { + return notLikeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_RIGHT), null, column, val); + } + + default Children notLikeRightIfPresent(String alias, SFunction column, Object val) { + return notLikeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_RIGHT), alias, column, val); + } +} diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfAbsent.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfAbsent.java deleted file mode 100644 index a58520d..0000000 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfAbsent.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.github.yulichang.wrapper.interfaces; - -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; - -import java.util.function.BiPredicate; - -/** - * {@link com.baomidou.mybatisplus.core.conditions.interfaces.Compare} - * - * @author yulichang - * @since 1.4.9 - */ -@SuppressWarnings("unused") -public interface CompareStrIfAbsent extends CompareStr { - - BiPredicate getIfAbsent(); - - default Children eqIfAbsent(R column, Object val) { - return eq(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.EQ), column, val); - } - - default Children neIfAbsent(R column, Object val) { - return ne(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NE), column, val); - } - - default Children gtIfAbsent(R column, Object val) { - return gt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GT), column, val); - } - - default Children geIfAbsent(R column, Object val) { - return ge(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.GE), column, val); - } - - default Children ltIfAbsent(R column, Object val) { - return lt(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LT), column, val); - } - - default Children leIfAbsent(R column, Object val) { - return le(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LE), column, val); - } - - default Children likeIfAbsent(R column, Object val) { - return like(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE), column, val); - } - - default Children notLikeIfAbsent(R column, Object val) { - return notLike(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE), column, val); - } - - default Children likeLeftIfAbsent(R column, Object val) { - return likeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_LEFT), column, val); - } - - default Children likeRightIfAbsent(R column, Object val) { - return likeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.LIKE_RIGHT), column, val); - } - - default Children notLikeLeftIfAbsent(R column, Object val) { - return notLikeLeft(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_LEFT), column, val); - } - - default Children notLikeRightIfAbsent(R column, Object val) { - return notLikeRight(getIfAbsent().test(val, IfAbsentSqlKeyWordEnum.NOT_LIKE_RIGHT), column, val); - } -} diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfPresent.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfPresent.java new file mode 100644 index 0000000..04b77fd --- /dev/null +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/interfaces/CompareStrIfPresent.java @@ -0,0 +1,65 @@ +package com.github.yulichang.wrapper.interfaces; + +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; + +import java.util.function.BiPredicate; + +/** + * {@link com.baomidou.mybatisplus.core.conditions.interfaces.Compare} + * + * @author yulichang + * @since 1.4.9 + */ +@SuppressWarnings("unused") +public interface CompareStrIfPresent extends CompareStr { + + BiPredicate getIfPresent(); + + default Children eqIfPresent(R column, Object val) { + return eq(getIfPresent().test(val, IfPresentSqlKeyWordEnum.EQ), column, val); + } + + default Children neIfPresent(R column, Object val) { + return ne(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NE), column, val); + } + + default Children gtIfPresent(R column, Object val) { + return gt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GT), column, val); + } + + default Children geIfPresent(R column, Object val) { + return ge(getIfPresent().test(val, IfPresentSqlKeyWordEnum.GE), column, val); + } + + default Children ltIfPresent(R column, Object val) { + return lt(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LT), column, val); + } + + default Children leIfPresent(R column, Object val) { + return le(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LE), column, val); + } + + default Children likeIfPresent(R column, Object val) { + return like(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE), column, val); + } + + default Children notLikeIfPresent(R column, Object val) { + return notLike(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE), column, val); + } + + default Children likeLeftIfPresent(R column, Object val) { + return likeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_LEFT), column, val); + } + + default Children likeRightIfPresent(R column, Object val) { + return likeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.LIKE_RIGHT), column, val); + } + + default Children notLikeLeftIfPresent(R column, Object val) { + return notLikeLeft(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_LEFT), column, val); + } + + default Children notLikeRightIfPresent(R column, Object val) { + return notLikeRight(getIfPresent().test(val, IfPresentSqlKeyWordEnum.NOT_LIKE_RIGHT), column, val); + } +} diff --git a/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/XPluginImpl.java b/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/XPluginImpl.java index d6fad17..655dbc9 100644 --- a/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/XPluginImpl.java +++ b/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/XPluginImpl.java @@ -3,13 +3,13 @@ package com.github.yulichang.mybatisplusjoin.solon.plugin; import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils; import com.github.yulichang.config.ConfigProperties; import com.github.yulichang.config.MPJInterceptorConfig; -import com.github.yulichang.config.enums.IfAbsentEnum; +import com.github.yulichang.config.enums.IfPresentEnum; import com.github.yulichang.config.enums.LogicDelTypeEnum; import com.github.yulichang.extension.mapping.config.MappingConfig; import com.github.yulichang.injector.MPJSqlInjector; import com.github.yulichang.toolkit.SpringContentUtils; import com.github.yulichang.toolkit.reflect.GenericTypeUtils; -import com.github.yulichang.wrapper.enums.IfAbsentSqlKeyWordEnum; +import com.github.yulichang.wrapper.enums.IfPresentSqlKeyWordEnum; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.solon.MybatisAdapter; import org.apache.ibatis.solon.integration.MybatisAdapterManager; @@ -59,10 +59,10 @@ public class XPluginImpl implements Plugin { Arrays.stream(LogicDelTypeEnum.values()).filter(e -> e.name().equalsIgnoreCase(val)).findFirst() .orElseThrow(() -> ExceptionUtils.mpe("mybatis-plus-join.logicDelType 配置错误"))); ConfigProperties.mappingMaxCount = prop.get("mappingMaxCount", Integer::parseInt); - ConfigProperties.ifAbsent = prop.get("ifAbsent", val -> - Arrays.stream(IfAbsentEnum.values()).filter(e -> e.name().equalsIgnoreCase(val)).findFirst() - .map(m -> (BiPredicate) (o, enums) -> m.test(o)) - .orElseThrow(() -> ExceptionUtils.mpe("mybatis-plus-join.ifAbsent 配置错误"))); + ConfigProperties.ifPresent = prop.get("ifPresent", val -> + Arrays.stream(IfPresentEnum.values()).filter(e -> e.name().equalsIgnoreCase(val)).findFirst() + .map(m -> (BiPredicate) (o, enums) -> m.test(o)) + .orElseThrow(() -> ExceptionUtils.mpe("mybatis-plus-join.ifPresent 配置错误"))); // 后续操作 context.onEvent(AppLoadEndEvent.class, e -> { List sqlSessionFactoryList = MybatisAdapterManager.getAll().values().stream() diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/CustomWrapperTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/CustomWrapperTest.java index 7808b7f..d2114db 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/CustomWrapperTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/CustomWrapperTest.java @@ -34,7 +34,8 @@ public class CustomWrapperTest { return null; } - public CWrapper eqIfAbsent(SFunction column, Object val) { + @Override + public CWrapper eqIfPresent(SFunction column, Object val) { super.eq(Objects.nonNull(val), column, val); return this; } @@ -47,7 +48,7 @@ public class CustomWrapperTest { .selectAll(UserDO.class) // .toChildren(new Ref>()) .toChildren(CWrapper::toCWrapper) - .eqIfAbsent(UserDO::getId, 1); + .eqIfPresent(UserDO::getId, 1); List dos = userMapper.selectList(wrapper); dos.forEach(System.out::println); @@ -56,7 +57,7 @@ public class CustomWrapperTest { .selectAll(UserDO.class) .toChildren(new Ref>()) // .toChildren(CWrapper::toCWrapper) - .eqIfAbsent(UserDO::getId, null); + .eqIfPresent(UserDO::getId, null); List dos1 = userMapper.selectList(wrapper1); dos1.forEach(System.out::println); } diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/IfAbsentTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/IfPresentTest.java similarity index 53% rename from mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/IfAbsentTest.java rename to mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/IfPresentTest.java index f12eedd..5101c39 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/IfAbsentTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/IfPresentTest.java @@ -1,6 +1,6 @@ package com.github.yulichang.test.join.m; -import com.github.yulichang.config.enums.IfAbsentEnum; +import com.github.yulichang.config.enums.IfPresentEnum; import com.github.yulichang.test.join.entity.UserDO; import com.github.yulichang.test.util.Reset; import com.github.yulichang.test.util.ThreadLocalUtils; @@ -13,7 +13,7 @@ import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest -public class IfAbsentTest { +public class IfPresentTest { @BeforeEach void setUp() { @@ -21,35 +21,35 @@ public class IfAbsentTest { } @Test - void ifAbsent() { - assert IfAbsentEnum.NOT_EMPTY.test("\t"); - assert !IfAbsentEnum.NOT_EMPTY.test(""); - assert IfAbsentEnum.NOT_EMPTY.test(" "); - assert IfAbsentEnum.NOT_EMPTY.test("\r"); - assert IfAbsentEnum.NOT_EMPTY.test("a"); - assert IfAbsentEnum.NOT_EMPTY.test(1); - assert IfAbsentEnum.NOT_EMPTY.test(true); - assert IfAbsentEnum.NOT_EMPTY.test('A'); + void ifPresent() { + assert IfPresentEnum.NOT_EMPTY.test("\t"); + assert !IfPresentEnum.NOT_EMPTY.test(""); + assert IfPresentEnum.NOT_EMPTY.test(" "); + assert IfPresentEnum.NOT_EMPTY.test("\r"); + assert IfPresentEnum.NOT_EMPTY.test("a"); + assert IfPresentEnum.NOT_EMPTY.test(1); + assert IfPresentEnum.NOT_EMPTY.test(true); + assert IfPresentEnum.NOT_EMPTY.test('A'); - assert !IfAbsentEnum.NOT_BLANK.test("\t"); - assert !IfAbsentEnum.NOT_BLANK.test(""); - assert !IfAbsentEnum.NOT_BLANK.test(" "); - assert !IfAbsentEnum.NOT_BLANK.test("\r"); - assert IfAbsentEnum.NOT_BLANK.test("a"); - assert IfAbsentEnum.NOT_EMPTY.test(1); - assert IfAbsentEnum.NOT_EMPTY.test(true); - assert IfAbsentEnum.NOT_EMPTY.test('A'); + assert !IfPresentEnum.NOT_BLANK.test("\t"); + assert !IfPresentEnum.NOT_BLANK.test(""); + assert !IfPresentEnum.NOT_BLANK.test(" "); + assert !IfPresentEnum.NOT_BLANK.test("\r"); + assert IfPresentEnum.NOT_BLANK.test("a"); + assert IfPresentEnum.NOT_EMPTY.test(1); + assert IfPresentEnum.NOT_EMPTY.test(true); + assert IfPresentEnum.NOT_EMPTY.test('A'); ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, " + "t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " + "WHERE t.del = false AND (t.id = ? AND t.head_img = ? AND t.`name` = ?)"); MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class) .selectAll(UserDO.class) - .eqIfAbsent(UserDO::getId, 1) - .eqIfAbsent(UserDO::getPid, null) - .eqIfAbsent(UserDO::getAddressId, "") - .eqIfAbsent(UserDO::getImg, "\t") - .eqIfAbsent(UserDO::getName, "张三 1"); + .eqIfPresent(UserDO::getId, 1) + .eqIfPresent(UserDO::getPid, null) + .eqIfPresent(UserDO::getAddressId, "") + .eqIfPresent(UserDO::getImg, "\t") + .eqIfPresent(UserDO::getName, "张三 1"); List list = wrapper.list(); list.forEach(System.out::println); @@ -58,12 +58,12 @@ public class IfAbsentTest { "WHERE t.del = false AND (t.id = ? AND t.`name` = ?)"); MPJLambdaWrapper wrapper1 = JoinWrappers.lambda(UserDO.class) .selectAll(UserDO.class) - .setIfAbsent(IfAbsentEnum.NOT_BLANK) - .eqIfAbsent(UserDO::getId, 1) - .eqIfAbsent(UserDO::getPid, null) - .eqIfAbsent(UserDO::getAddressId, "") - .eqIfAbsent(UserDO::getImg, "\t") - .eqIfAbsent(UserDO::getName, "张三 1"); + .setIfPresent(IfPresentEnum.NOT_BLANK) + .eqIfPresent(UserDO::getId, 1) + .eqIfPresent(UserDO::getPid, null) + .eqIfPresent(UserDO::getAddressId, "") + .eqIfPresent(UserDO::getImg, "\t") + .eqIfPresent(UserDO::getName, "张三 1"); List list1 = wrapper1.list(); list1.forEach(System.out::println); @@ -72,12 +72,12 @@ public class IfAbsentTest { "WHERE t.del = false AND (t.id = ? AND t.pid = ? AND t.`name` = ? AND t.head_img = ? AND t.`name` = ?)"); MPJLambdaWrapper wrapper2 = JoinWrappers.lambda(UserDO.class) .selectAll(UserDO.class) - .setIfAbsent(o -> true) - .eqIfAbsent(UserDO::getId, 1) - .eqIfAbsent(UserDO::getPid, null) - .eqIfAbsent(UserDO::getName, "") - .eqIfAbsent(UserDO::getImg, "\t") - .eqIfAbsent(UserDO::getName, "张三 1"); + .setIfPresent(o -> true) + .eqIfPresent(UserDO::getId, 1) + .eqIfPresent(UserDO::getPid, null) + .eqIfPresent(UserDO::getName, "") + .eqIfPresent(UserDO::getImg, "\t") + .eqIfPresent(UserDO::getName, "张三 1"); List list2 = wrapper2.list(); list2.forEach(System.out::println); } diff --git a/mybatis-plus-join-test/test-kotlin/src/main/java/com/github/yulichang/test/kt/entity/UserDO.kt b/mybatis-plus-join-test/test-kotlin/src/main/java/com/github/yulichang/test/kt/entity/UserDO.kt index c2860e6..73f428c 100644 --- a/mybatis-plus-join-test/test-kotlin/src/main/java/com/github/yulichang/test/kt/entity/UserDO.kt +++ b/mybatis-plus-join-test/test-kotlin/src/main/java/com/github/yulichang/test/kt/entity/UserDO.kt @@ -52,4 +52,7 @@ open class UserDO : ID(), Serializable { @TableField(exist = false) var addressList2: List? = null + override fun toString(): String { + return "UserDO(pid=$pid, name=$name, json=$json, sex=$sex, img=$img, createTime=$createTime, addressId=$addressId, addressId2=$addressId2, del=$del, createBy=$createBy, createName=$createName, updateBy=$updateBy, updateName=$updateName, alias=$alias, children=$children, addressList=$addressList, addressList2=$addressList2)" + } } diff --git a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/LambdaWrapperTest.kt b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/LambdaWrapperTest.kt index 1be531a..ecb9835 100644 --- a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/LambdaWrapperTest.kt +++ b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/LambdaWrapperTest.kt @@ -734,7 +734,7 @@ class LambdaWrapperTest { assert(dos!!.size == 4) ThreadLocalUtils.set( - "SELECT id,pid,`name`,`json`,sex,head_img,create_time,address_id,address_id2,del,create_by,update_by FROM `user` t WHERE t.del=false AND (t.id > ? AND t.id < ?)", + "SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.id > ? AND t.id < ?)", "SELECT * FROM `user` t WHERE t.del=false AND (t.id > ? AND t.id < ?) " ) val dos1: MutableList? = userMapper.selectList( @@ -1009,7 +1009,7 @@ class LambdaWrapperTest { @Test fun joinOrder() { ThreadLocalUtils.set( - "SELECT id,user_id,name FROM order_t t ORDER BY t.name DESC", + "SELECT t.id, t.user_id, t.name FROM order_t t ORDER BY t.name DESC", "SELECT id,user_id,name FROM order_t t ORDER BY t.name desc" ) val wrapper: KtLambdaWrapper = KtWrappers.query(OrderDO::class.java) diff --git a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt index 78c94a8..550f236 100644 --- a/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt +++ b/mybatis-plus-join-test/test-kotlin/src/test/java/com/github/yulichang/test/kt/m/CustomWrapperTest.kt @@ -26,7 +26,7 @@ class CustomWrapperTest { //自定义wrapper扩展 class CWrapper : KtLambdaWrapper() { - fun eqIfAbsent(column: KProperty<*>, `val`: Any?): CWrapper { + override fun eqIfPresent(column: KProperty<*>?, `val`: Any?): CWrapper { eq(Objects.nonNull(`val`), column, `val`) return this } @@ -42,16 +42,16 @@ class CustomWrapperTest { fun testWrapperCustomer() { ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false AND (t.id = ?)") val wrapper: CWrapper = CWrapper() - .selectAll(UserDO::class.java) - .toChildren> { CWrapper.toCWrapper() } - .eqIfAbsent(UserDO::id, 1) + .selectAll(UserDO::class.java) + .toChildren> { CWrapper.toCWrapper() } + .eqIfPresent(UserDO::id, 1) val dos = userMapper?.selectList(wrapper) dos?.forEach(System.out::println) ThreadLocalUtils.set("SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t WHERE t.del = false") val wrapper1: CWrapper = CWrapper() - .selectAll(UserDO::class.java) - .toChildren(Ref>()) - .eqIfAbsent(UserDO::id, null) + .selectAll(UserDO::class.java) + .toChildren(Ref>()) + .eqIfPresent(UserDO::id, null) val dos1 = userMapper?.selectList(wrapper1) dos1?.forEach(System.out::println) } diff --git a/mybatis-plus-join-test/test-springboot3-jdk17/src/main/resources/application.yml b/mybatis-plus-join-test/test-springboot3-jdk17/src/main/resources/application.yml index 7f43c6c..2713cd3 100644 --- a/mybatis-plus-join-test/test-springboot3-jdk17/src/main/resources/application.yml +++ b/mybatis-plus-join-test/test-springboot3-jdk17/src/main/resources/application.yml @@ -25,4 +25,5 @@ mybatis-plus: mybatis-plus-join: banner: true sub-table-logic: true - ms-cache: true \ No newline at end of file + ms-cache: true + logic-del-type: where \ No newline at end of file