From 6be7f0bc213911403c48ca1171dbb5cd935836d1 Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Wed, 11 Sep 2024 17:45:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/dependabot.yml | 11 --- .../extension/apt/AptAbstractWrapper.java | 4 +- .../extension/apt/AptQueryWrapper.java | 4 +- .../extension/apt/JoinAbstractWrapper.java | 2 +- .../extension/apt/interfaces/Compare.java | 2 +- .../apt/interfaces/CompareIfExists.java | 2 +- .../extension/apt/interfaces/Func.java | 2 +- .../extension/apt/interfaces/OnCompare.java | 2 +- .../extension/apt/interfaces/Query.java | 4 +- .../extension/apt/interfaces/QueryJoin.java | 4 +- .../extension/apt/interfaces/QueryLabel.java | 2 +- .../apt/matedata}/BaseColumn.java | 2 +- .../apt/matedata}/Column.java | 2 +- .../apt/matedata}/OgnlRoot.java | 2 +- .../extension/apt/resultmap/MybatisLabel.java | 4 +- .../apt/resultmap/MybatisLabelFree.java | 4 +- .../extension/apt/resultmap/Result.java | 4 +- .../extension/apt/toolkit/AptWrappers.java | 2 +- .../yulichang/interceptor/MPJInterceptor.java | 20 ++--- ....java => PageInnerInterceptorWrapper.java} | 43 +++++------ .../yulichang/toolkit/InterceptorList.java | 77 ++++++++++--------- .../github/yulichang/toolkit/TableMap.java | 2 +- .../yulichang/wrapper/resultmap/IResult.java | 2 +- .../wrapper/segments/AptConsumer.java | 2 +- .../yulichang/wrapper/segments/PageInfo.java | 3 - .../yulichang/wrapper/segments/Select.java | 4 +- .../yulichang/wrapper/segments/SelectApt.java | 4 +- .../wrapper/segments/SelectLabel.java | 2 +- .../test/join/mapper/AreaMapper.java | 5 ++ .../src/main/resources/mapper/UserMapper.xml | 5 +- .../test/join/apt/unit/CustomWrapperTest.java | 4 +- .../test/join/apt/unit/OrderByTest.java | 2 +- .../test/join/unit/PageByMainTest.java | 13 ++++ plugin/mybatis-plus-join-processor/pom.xml | 9 ++- .../yulichang/processor/EntityProcessor.java | 4 +- .../processor/matedata/TableInfo.java | 2 +- 36 files changed, 134 insertions(+), 128 deletions(-) delete mode 100644 .github/dependabot.yml rename mybatis-plus-join-core/src/main/java/com/github/yulichang/{apt => extension/apt/matedata}/BaseColumn.java (87%) rename mybatis-plus-join-core/src/main/java/com/github/yulichang/{apt => extension/apt/matedata}/Column.java (91%) rename mybatis-plus-join-core/src/main/java/com/github/yulichang/{apt => extension/apt/matedata}/OgnlRoot.java (97%) rename mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/pagination/{PageInnerInterceptor.java => PageInnerInterceptorWrapper.java} (88%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 14fc3a4..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates - -version: 2 -updates: - - package-ecosystem: "gradle" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "daily" diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptAbstractWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptAbstractWrapper.java index 9dcc781..a3f8292 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptAbstractWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptAbstractWrapper.java @@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.github.yulichang.adapter.AdapterHelper; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.config.ConfigProperties; import com.github.yulichang.config.enums.LogicDelTypeEnum; import com.github.yulichang.extension.apt.interfaces.QueryJoin; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptQueryWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptQueryWrapper.java index 6d8250a..79be9e2 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptQueryWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/AptQueryWrapper.java @@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.config.ConfigProperties; import com.github.yulichang.extension.apt.interfaces.Query; import com.github.yulichang.extension.apt.interfaces.QueryLabel; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/JoinAbstractWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/JoinAbstractWrapper.java index dbcab05..c5c216c 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/JoinAbstractWrapper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/JoinAbstractWrapper.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.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.config.ConfigProperties; import com.github.yulichang.extension.apt.interfaces.CompareIfExists; import com.github.yulichang.extension.apt.interfaces.Func; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Compare.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Compare.java index f1e625a..216347c 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Compare.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Compare.java @@ -1,6 +1,6 @@ package com.github.yulichang.extension.apt.interfaces; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.Column; import java.io.Serializable; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/CompareIfExists.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/CompareIfExists.java index 0110b2b..5caec63 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/CompareIfExists.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/CompareIfExists.java @@ -1,6 +1,6 @@ package com.github.yulichang.extension.apt.interfaces; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.wrapper.enums.IfExistsSqlKeyWordEnum; import java.util.function.BiPredicate; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Func.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Func.java index adf8f3f..3d6e64e 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Func.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Func.java @@ -1,6 +1,6 @@ package com.github.yulichang.extension.apt.interfaces; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.Column; import java.util.Collection; import java.util.List; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/OnCompare.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/OnCompare.java index c4f9760..537fe96 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/OnCompare.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/OnCompare.java @@ -1,6 +1,6 @@ package com.github.yulichang.extension.apt.interfaces; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.Column; import java.io.Serializable; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Query.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Query.java index 51083ec..b66bed8 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Query.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/Query.java @@ -3,8 +3,8 @@ package com.github.yulichang.extension.apt.interfaces; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.toolkit.Constant; import com.github.yulichang.toolkit.LambdaUtils; import com.github.yulichang.toolkit.MPJReflectionKit; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryJoin.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryJoin.java index db2b375..e402039 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryJoin.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryJoin.java @@ -1,7 +1,7 @@ package com.github.yulichang.extension.apt.interfaces; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.interfaces.MPJBaseJoin; import com.github.yulichang.query.interfaces.StringJoin; import com.github.yulichang.toolkit.Constant; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryLabel.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryLabel.java index cc1aa75..3b8414c 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryLabel.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/interfaces/QueryLabel.java @@ -2,7 +2,7 @@ package com.github.yulichang.extension.apt.interfaces; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.github.yulichang.apt.BaseColumn; +import com.github.yulichang.extension.apt.matedata.BaseColumn; import com.github.yulichang.toolkit.LambdaUtils; import com.github.yulichang.toolkit.MPJReflectionKit; import com.github.yulichang.toolkit.support.FieldCache; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/BaseColumn.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/BaseColumn.java similarity index 87% rename from mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/BaseColumn.java rename to mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/BaseColumn.java index d514913..9ab7259 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/BaseColumn.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/BaseColumn.java @@ -1,4 +1,4 @@ -package com.github.yulichang.apt; +package com.github.yulichang.extension.apt.matedata; import lombok.AccessLevel; import lombok.Getter; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/Column.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/Column.java similarity index 91% rename from mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/Column.java rename to mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/Column.java index 4eddea2..3050b16 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/Column.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/Column.java @@ -1,4 +1,4 @@ -package com.github.yulichang.apt; +package com.github.yulichang.extension.apt.matedata; import lombok.Getter; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/OgnlRoot.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/OgnlRoot.java similarity index 97% rename from mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/OgnlRoot.java rename to mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/OgnlRoot.java index 2999fa2..baca2cf 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/OgnlRoot.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/matedata/OgnlRoot.java @@ -1,4 +1,4 @@ -package com.github.yulichang.apt; +package com.github.yulichang.extension.apt.matedata; import lombok.Getter; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabel.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabel.java index d2aa6eb..c0167be 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabel.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabel.java @@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.toolkit.LambdaUtils; import com.github.yulichang.toolkit.MPJReflectionKit; import com.github.yulichang.toolkit.TableHelper; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabelFree.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabelFree.java index 88b893c..1606b02 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabelFree.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/MybatisLabelFree.java @@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.toolkit.LambdaUtils; import com.github.yulichang.toolkit.MPJReflectionKit; import com.github.yulichang.toolkit.support.ColumnCache; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/Result.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/Result.java index 73aec3c..215b18d 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/Result.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/resultmap/Result.java @@ -2,8 +2,8 @@ package com.github.yulichang.extension.apt.resultmap; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.toolkit.LambdaUtils; import com.github.yulichang.toolkit.support.ColumnCache; import com.github.yulichang.wrapper.resultmap.IResult; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/toolkit/AptWrappers.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/toolkit/AptWrappers.java index e5f582d..ec0457f 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/toolkit/AptWrappers.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/extension/apt/toolkit/AptWrappers.java @@ -1,6 +1,6 @@ package com.github.yulichang.extension.apt.toolkit; -import com.github.yulichang.apt.BaseColumn; +import com.github.yulichang.extension.apt.matedata.BaseColumn; import com.github.yulichang.extension.apt.AptQueryWrapper; /** diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/MPJInterceptor.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/MPJInterceptor.java index a2bbd8e..112bbf6 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/MPJInterceptor.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/MPJInterceptor.java @@ -3,12 +3,14 @@ package com.github.yulichang.interceptor; import com.baomidou.mybatisplus.core.MybatisPlusVersion; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.TableInfo; -import com.baomidou.mybatisplus.core.toolkit.*; +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.StringUtils; import com.github.yulichang.adapter.AdapterHelper; import com.github.yulichang.adapter.base.tookit.VersionUtils; import com.github.yulichang.config.ConfigProperties; import com.github.yulichang.interfaces.MPJBaseJoin; -import com.github.yulichang.toolkit.ReflectionKit; import com.github.yulichang.toolkit.*; import com.github.yulichang.toolkit.support.FieldCache; import com.github.yulichang.wrapper.interfaces.SelectWrapper; @@ -100,16 +102,10 @@ public class MPJInterceptor implements Interceptor { wrapper.selectAll(); } if (wrapper.isResultMapCollection()) { - if (map.values().stream().anyMatch(a -> a instanceof IPage)) { - if (wrapper.isPageByMain()) { - AdapterHelper.getAdapter().checkCollectionPage(); - IPage page = ParameterUtils.findPage(map).orElse(null); - wrapper.getPageInfo().setInnerPage(page); - map.entrySet().removeIf(entry -> entry.getValue() instanceof IPage); - } else { - // 一对多分页问题警告 - log.warn("select one to many and page query will result in errors in the total count statistics, please use xml."); - } + if (map.values().stream().anyMatch(a -> a instanceof IPage) && !wrapper.isPageByMain()) { + AdapterHelper.getAdapter().checkCollectionPage(); + // 一对多分页问题警告 + log.warn("select one to many and page query will result in errors in the total count statistics, please use xml."); } } } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/pagination/PageInnerInterceptor.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/pagination/PageInnerInterceptorWrapper.java similarity index 88% rename from mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/pagination/PageInnerInterceptor.java rename to mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/pagination/PageInnerInterceptorWrapper.java index ea59792..a8e2825 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/pagination/PageInnerInterceptor.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/interceptor/pagination/PageInnerInterceptorWrapper.java @@ -2,10 +2,7 @@ package com.github.yulichang.interceptor.pagination; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils; -import com.baomidou.mybatisplus.core.toolkit.PluginUtils; -import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.*; import com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect; @@ -35,12 +32,14 @@ import java.util.stream.Collectors; * @author yulichang * @since 1.5.0 */ -public class PageInnerInterceptor extends PaginationInnerInterceptor { +public class PageInnerInterceptorWrapper extends PaginationInnerInterceptor { + private static final Log log = LogFactory.getLog(PageInnerInterceptorWrapper.class); - private static final Log log = LogFactory.getLog(PageInnerInterceptor.class); + private final PaginationInnerInterceptor paginationInnerInterceptor; - public PageInnerInterceptor(PaginationInnerInterceptor pagination) { + public PageInnerInterceptorWrapper(PaginationInnerInterceptor pagination) { + this.paginationInnerInterceptor = pagination; super.setOptimizeJoin(true); super.setDbType(pagination.getDbType()); super.setDialect(pagination.getDialect()); @@ -53,13 +52,13 @@ public class PageInnerInterceptor extends PaginationInnerInterceptor { */ @Override public boolean willDoQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { - //没有wrapper 或者 不是对多查询 不做处理 - SelectWrapper wrapper = findMPJWrapper(parameter).orElse(null); - if (wrapper == null || !wrapper.isPageByMain()) { - return true; + if (unusedPage(parameter)) { + return paginationInnerInterceptor.willDoQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql); } + //没有wrapper 或者 不是对多查询 不做处理 + SelectWrapper wrapper = findMPJWrapper(parameter).orElseThrow(RuntimeException::new); // copy super - IPage page = wrapper.getPageInfo().getInnerPage(); + IPage page = ParameterUtils.findPage(parameter).orElse(null); if (page == null || page.getSize() < 0 || !page.searchCount() || resultHandler != Executor.NO_RESULT_HANDLER) { return true; } @@ -95,17 +94,16 @@ public class PageInnerInterceptor extends PaginationInnerInterceptor { * 添加分页方言 */ @Override - public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) { - SelectWrapper wrapper = findMPJWrapper(parameter).orElse(null); - if (wrapper == null || !wrapper.isPageByMain()) { + public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { + if (unusedPage(parameter)) { + paginationInnerInterceptor.beforeQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql); return; } // copy super - IPage page = wrapper.getPageInfo().getInnerPage(); + IPage page = ParameterUtils.findPage(parameter).orElse(null); if (null == page) { return; } - // 处理 orderBy 拼接 boolean addOrdered = false; String buildSql = boundSql.getSql(); @@ -137,12 +135,11 @@ public class PageInnerInterceptor extends PaginationInnerInterceptor { mpBoundSql.parameterMappings(dialect.getFullMappings()); } - @Override - public void setProperties(Properties properties) { - super.setProperties(properties); + private boolean unusedPage(Object parameter) { + return !findMPJWrapper(parameter).map(SelectWrapper::isPageByMain).orElse(false); } - public String autoCountSql(String sql, List mappings, MappedStatement ms, Object parameter, SelectWrapper wrapper) { + private String autoCountSql(String sql, List mappings, MappedStatement ms, Object parameter, SelectWrapper wrapper) { try { Select select = (Select) JsqlParserGlobal.parse(sql); if (select instanceof SetOperationList) { @@ -228,12 +225,12 @@ public class PageInnerInterceptor extends PaginationInnerInterceptor { throw ExceptionUtils.mpe("not support this sql, please use xml. error sql: " + sql); } - protected DialectWrapper findMPJDialect(Executor executor) { + private DialectWrapper findMPJDialect(Executor executor) { IDialect dialect = super.findIDialect(executor); return new DialectWrapper(dialect); } - public static Optional> findMPJWrapper(Object parameterObject) { + private static Optional> findMPJWrapper(Object parameterObject) { if (parameterObject != null) { if (parameterObject instanceof Map) { Map parameterMap = (Map) parameterObject; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/InterceptorList.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/InterceptorList.java index 5ba39ab..26f6145 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/InterceptorList.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/InterceptorList.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.github.yulichang.adapter.AdapterHelper; import com.github.yulichang.interceptor.MPJInterceptor; -import com.github.yulichang.interceptor.pagination.PageInnerInterceptor; +import com.github.yulichang.interceptor.pagination.PageInnerInterceptorWrapper; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import org.apache.ibatis.plugin.Interceptor; @@ -40,45 +40,12 @@ public class InterceptorList extends ArrayList { super.removeIf(predicate); super.add(mpjInterceptor); } - try { - AdapterHelper.getAdapter().checkCollectionPage(); - } catch (Exception e) { - return; - } - if (this.stream().anyMatch(i -> i instanceof MybatisPlusInterceptor)) { - MybatisPlusInterceptor mybatisPlusInterceptor = super.stream().filter(i -> i instanceof MybatisPlusInterceptor) - .map(i -> (MybatisPlusInterceptor) i).findFirst().orElse(null); - if (mybatisPlusInterceptor != null) { - try { - Field field = MybatisPlusInterceptor.class.getDeclaredField("interceptors"); - field.setAccessible(true); - @SuppressWarnings("unchecked") - List interceptors = (List) field.get(mybatisPlusInterceptor); - - Integer index = null; - PaginationInnerInterceptor paginationInnerInterceptor = null; - if (interceptors.stream().noneMatch(i -> i instanceof PageInnerInterceptor)) { - for (int i = 0; i < interceptors.size(); i++) { - InnerInterceptor innerInterceptor = interceptors.get(i); - if (innerInterceptor instanceof PaginationInnerInterceptor) { - paginationInnerInterceptor = (PaginationInnerInterceptor) innerInterceptor; - index = i; - break; - } - } - } - if (index != null) { - interceptors.add(index + 1, new PageInnerInterceptor(paginationInnerInterceptor)); - } - } catch (Exception e) { - log.error(e.getMessage(), e); - } - } - } + this.forEach(this::wrapperInnerPage); } @Override public boolean add(E e) { + this.wrapperInnerPage(e); if (this.isEmpty()) { return super.add(e); } @@ -91,4 +58,42 @@ public class InterceptorList extends ArrayList { } return add; } + + @Override + public boolean addAll(Collection c) { + c.forEach(this::wrapperInnerPage); + return super.addAll(c); + } + + @Override + public boolean addAll(int index, Collection c) { + c.forEach(this::wrapperInnerPage); + return super.addAll(index, c); + } + + private void wrapperInnerPage(Interceptor interceptor) { + try { + AdapterHelper.getAdapter().checkCollectionPage(); + } catch (Exception e) { + return; + } + if (interceptor instanceof MybatisPlusInterceptor) { + MybatisPlusInterceptor mybatisPlusInterceptor = (MybatisPlusInterceptor) interceptor; + try { + Field field = MybatisPlusInterceptor.class.getDeclaredField("interceptors"); + field.setAccessible(true); + @SuppressWarnings("unchecked") + List interceptors = (List) field.get(mybatisPlusInterceptor); + + interceptors.replaceAll(i -> { + if (i instanceof PaginationInnerInterceptor && !(i instanceof PageInnerInterceptorWrapper)) { + return new PageInnerInterceptorWrapper((PaginationInnerInterceptor) i); + } + return i; + }); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + } } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableMap.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableMap.java index 6a9f407..bbcaeca 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableMap.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/TableMap.java @@ -1,7 +1,7 @@ package com.github.yulichang.toolkit; import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils; -import com.github.yulichang.apt.BaseColumn; +import com.github.yulichang.extension.apt.matedata.BaseColumn; import lombok.Getter; import lombok.Setter; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/resultmap/IResult.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/resultmap/IResult.java index 1ab0b3c..3cbe462 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/resultmap/IResult.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/resultmap/IResult.java @@ -1,6 +1,6 @@ package com.github.yulichang.wrapper.resultmap; -import com.github.yulichang.apt.BaseColumn; +import com.github.yulichang.extension.apt.matedata.BaseColumn; import com.github.yulichang.wrapper.segments.SelectCache; import org.apache.ibatis.type.JdbcType; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/AptConsumer.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/AptConsumer.java index 93a75cf..748fe87 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/AptConsumer.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/AptConsumer.java @@ -1,6 +1,6 @@ package com.github.yulichang.wrapper.segments; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.Column; import java.io.Serializable; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/PageInfo.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/PageInfo.java index 4c46250..5fb00bf 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/PageInfo.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/PageInfo.java @@ -1,6 +1,5 @@ package com.github.yulichang.wrapper.segments; -import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -18,7 +17,5 @@ import java.io.Serializable; @AllArgsConstructor public class PageInfo implements Serializable { - private IPage innerPage; - private String countSelectSql; } diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/Select.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/Select.java index c7e328b..4c77833 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/Select.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/Select.java @@ -1,7 +1,7 @@ package com.github.yulichang.wrapper.segments; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.wrapper.enums.BaseFuncEnum; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.TypeHandler; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectApt.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectApt.java index f95bb76..2eb538b 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectApt.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectApt.java @@ -1,7 +1,7 @@ package com.github.yulichang.wrapper.segments; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.wrapper.enums.BaseFuncEnum; import lombok.Getter; import lombok.Setter; diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectLabel.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectLabel.java index 9e15fec..75dae04 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectLabel.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/segments/SelectLabel.java @@ -1,7 +1,7 @@ package com.github.yulichang.wrapper.segments; -import com.github.yulichang.apt.BaseColumn; +import com.github.yulichang.extension.apt.matedata.BaseColumn; import com.github.yulichang.wrapper.enums.BaseFuncEnum; import lombok.Getter; import org.apache.ibatis.type.JdbcType; diff --git a/mybatis-plus-join-test/test-join/src/main/java/com/github/yulichang/test/join/mapper/AreaMapper.java b/mybatis-plus-join-test/test-join/src/main/java/com/github/yulichang/test/join/mapper/AreaMapper.java index 163567d..4c1fd28 100644 --- a/mybatis-plus-join-test/test-join/src/main/java/com/github/yulichang/test/join/mapper/AreaMapper.java +++ b/mybatis-plus-join-test/test-join/src/main/java/com/github/yulichang/test/join/mapper/AreaMapper.java @@ -3,7 +3,12 @@ package com.github.yulichang.test.join.mapper; import com.github.yulichang.test.join.entity.AreaDO; import org.apache.ibatis.annotations.Mapper; +import java.awt.geom.Area; +import java.util.List; + @Mapper @SuppressWarnings("unused") public interface AreaMapper extends MyBaseMapper { + + List all(); } diff --git a/mybatis-plus-join-test/test-join/src/main/resources/mapper/UserMapper.xml b/mybatis-plus-join-test/test-join/src/main/resources/mapper/UserMapper.xml index 90efe33..dbb1c72 100644 --- a/mybatis-plus-join-test/test-join/src/main/resources/mapper/UserMapper.xml +++ b/mybatis-plus-join-test/test-join/src/main/resources/mapper/UserMapper.xml @@ -1,6 +1,9 @@ - + + \ No newline at end of file diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java index dae6ba1..4fd1de4 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/CustomWrapperTest.java @@ -1,7 +1,7 @@ package com.github.yulichang.test.join.apt.unit; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.test.join.entity.UserDO; import com.github.yulichang.test.join.entity.apt.UserDOCol; import com.github.yulichang.test.join.mapper.UserMapper; diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java index 45e6673..bb8065b 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/unit/OrderByTest.java @@ -1,6 +1,6 @@ package com.github.yulichang.test.join.apt.unit; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.extension.apt.AptQueryWrapper; import com.github.yulichang.extension.apt.toolkit.AptWrappers; import com.github.yulichang.test.join.dto.UserDTO; diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/PageByMainTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/PageByMainTest.java index bc23f8f..1b869d9 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/PageByMainTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/PageByMainTest.java @@ -4,17 +4,30 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.test.join.dto.UserDTO; import com.github.yulichang.test.join.entity.AddressDO; import com.github.yulichang.test.join.entity.UserDO; +import com.github.yulichang.test.join.mapper.AreaMapper; import com.github.yulichang.test.util.ThreadLocalUtils; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import java.awt.geom.Area; +import java.util.List; + @SpringBootTest public class PageByMainTest { + @Autowired + private AreaMapper areaMapper; + + @Test void pageByMain() { + List all = areaMapper.all(); + System.out.println(all); + assert !all.isEmpty(); + 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, t1.id AS joina_id, t1.user_id, t1.area_id, t1.tel, " + "t1.address, t1.del AS joina_del FROM (SELECT * FROM `user` t WHERE t.del = false AND (t.id <= ?) LIMIT ?) t " + diff --git a/plugin/mybatis-plus-join-processor/pom.xml b/plugin/mybatis-plus-join-processor/pom.xml index cf0ff3f..b1ccf82 100644 --- a/plugin/mybatis-plus-join-processor/pom.xml +++ b/plugin/mybatis-plus-join-processor/pom.xml @@ -18,7 +18,7 @@ com.github.yulichang mybatis-plus-join-core - 1.4.13 + ${revision} com.baomidou @@ -26,9 +26,10 @@ ${mpj.mybatis.plus.version} - org.mybatis - mybatis - 3.5.16 + com.baomidou + mybatis-plus-extension + 3.5.7 + provided diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java index 1c29f4b..7820dbb 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java @@ -2,8 +2,8 @@ package com.github.yulichang.processor; import com.baomidou.mybatisplus.annotation.TableField; import com.github.yulichang.annotation.Table; -import com.github.yulichang.apt.BaseColumn; -import com.github.yulichang.apt.Column; +import com.github.yulichang.extension.apt.matedata.BaseColumn; +import com.github.yulichang.extension.apt.matedata.Column; import com.github.yulichang.processor.matedata.Conf; import com.github.yulichang.processor.matedata.FieldInfo; import com.github.yulichang.processor.matedata.TableInfo; diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java index c38a7a7..d7ee8a4 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java @@ -1,6 +1,6 @@ package com.github.yulichang.processor.matedata; -import com.github.yulichang.apt.OgnlRoot; +import com.github.yulichang.extension.apt.matedata.OgnlRoot; import org.apache.ibatis.builder.BuilderException; import org.apache.ibatis.ognl.Ognl; import org.apache.ibatis.ognl.OgnlContext;