From 538386c5abc06cb24c7da825a1061c5f0b298da4 Mon Sep 17 00:00:00 2001 From: yanglin Date: Fri, 1 Mar 2024 16:31:55 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"REQ-2010:=20=E5=B0=9D=E8=AF=95?= =?UTF-8?q?=E8=A7=A3=E5=86=B3limit=E9=87=8D=E5=A4=8D=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 7de5f7cebf2ebc2754b036ee42ab2ac87f5e4ef8. --- .../config/MybatisNodeUserInterceptor.java | 33 ---------- .../client/config/MybatisPlusConfig.java | 13 ++++ .../RemoveDuplicateLimitInterceptor.java | 66 ------------------- 3 files changed, 13 insertions(+), 99 deletions(-) delete mode 100644 msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisNodeUserInterceptor.java delete mode 100644 msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/RemoveDuplicateLimitInterceptor.java diff --git a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisNodeUserInterceptor.java b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisNodeUserInterceptor.java deleted file mode 100644 index eeeda19f..00000000 --- a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisNodeUserInterceptor.java +++ /dev/null @@ -1,33 +0,0 @@ -package cn.axzo.msg.center.notices.client.config; - -import com.baomidou.mybatisplus.core.MybatisConfiguration; -import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; -import lombok.RequiredArgsConstructor; -import org.apache.ibatis.session.Configuration; -import org.apache.ibatis.session.SqlSessionFactory; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; - -/** - * node_user表拦截器 - */ -@Order(-2) -@Component -@RequiredArgsConstructor -public class MybatisNodeUserInterceptor { - - private final SqlSessionFactory sessionFactory; - - @PostConstruct - public void init() { - Configuration configuration = sessionFactory.getConfiguration(); - if (configuration instanceof MybatisConfiguration) { - MybatisConfiguration mybatisConfiguration = (MybatisConfiguration) configuration; - mybatisConfiguration.addInterceptor(new PaginationInterceptor()); - mybatisConfiguration.addInterceptor(new RemoveDuplicateLimitInterceptor()); - } - } -} \ No newline at end of file diff --git a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java index e51c28f5..37f30707 100644 --- a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java +++ b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/MybatisPlusConfig.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.notices.client.config; +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -13,6 +14,18 @@ import org.springframework.context.annotation.Configuration; @Configuration public class MybatisPlusConfig { + /** + * 默认不配置分页插件的,会使用人RowBound进行分页,实际上是逻辑分页,物理上不会分页,也就是查询出来 + * 缓存中再分页;这样对于数据量比较多的情况,不合适,因此需要配置这个分页拦截器来实现物理的分页; + * @return + */ + @Bean + public PaginationInterceptor paginationInterceptor() { + PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); + // 设置分页的最大条数 + return paginationInterceptor; + } + @Bean public EntityMetaObjectHandler EntityMetaObjectHandler() { return new EntityMetaObjectHandler(); diff --git a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/RemoveDuplicateLimitInterceptor.java b/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/RemoveDuplicateLimitInterceptor.java deleted file mode 100644 index 62a5282c..00000000 --- a/msg-notices/msg-notices-client/src/main/java/cn/axzo/msg/center/notices/client/config/RemoveDuplicateLimitInterceptor.java +++ /dev/null @@ -1,66 +0,0 @@ -package cn.axzo.msg.center.notices.client.config; - -import com.alibaba.druid.sql.ast.SQLStatement; -import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; -import org.apache.ibatis.builder.StaticSqlSource; -import org.apache.ibatis.executor.Executor; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.mapping.MappedStatement; -import org.apache.ibatis.mapping.SqlSource; -import org.apache.ibatis.plugin.Interceptor; -import org.apache.ibatis.plugin.Intercepts; -import org.apache.ibatis.plugin.Invocation; -import org.apache.ibatis.plugin.Signature; -import org.apache.ibatis.session.ResultHandler; -import org.apache.ibatis.session.RowBounds; - -/** - * 把select和update语句中mybatis-plus自动添加到where条件里面的is_delete条件去掉(替换成常量表达式) - * - * @author yanglin - */ -@Intercepts(value = { - @Signature(type = Executor.class, method = "query", - args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}) -}) -public class RemoveDuplicateLimitInterceptor implements Interceptor { - - @Override - public Object intercept(Invocation invocation) throws Throwable { - final Object[] args = invocation.getArgs(); - MappedStatement ms = (MappedStatement) args[0]; - BoundSql boundSql = ms.getBoundSql(args[1]); - SQLStatement stmt = new MySqlStatementParser(boundSql.getSql()).parseSelect(); - StaticSqlSource newSqlSource = new StaticSqlSource( - ms.getConfiguration(), stmt.toString(), boundSql.getParameterMappings()); - args[0] = copyMappedStatement(ms, newSqlSource); - return invocation.proceed(); - } - - private MappedStatement copyMappedStatement(MappedStatement ms, SqlSource sqlSource) { - MappedStatement.Builder builder = - new MappedStatement.Builder(ms.getConfiguration(), ms.getId(), sqlSource, ms.getSqlCommandType()); - builder.resource(ms.getResource()); - builder.fetchSize(ms.getFetchSize()); - builder.statementType(ms.getStatementType()); - builder.keyGenerator(ms.getKeyGenerator()); - if (ms.getKeyProperties() != null && ms.getKeyProperties().length != 0) { - StringBuilder keyProperties = new StringBuilder(); - for (String keyProperty : ms.getKeyProperties()) { - keyProperties.append(keyProperty).append(","); - } - keyProperties.delete(keyProperties.length() - 1, keyProperties.length()); - builder.keyProperty(keyProperties.toString()); - } - builder.timeout(ms.getTimeout()); - builder.parameterMap(ms.getParameterMap()); - builder.resultMaps(ms.getResultMaps()); - builder.resultSetType(ms.getResultSetType()); - builder.cache(ms.getCache()); - builder.flushCacheRequired(ms.isFlushCacheRequired()); - builder.useCache(ms.isUseCache()); - - return builder.build(); - } - -} \ No newline at end of file