From e09024b000febfd81ae238412433d99cd509a3c0 Mon Sep 17 00:00:00 2001 From: jinliang Date: Wed, 15 Jul 2026 14:20:44 +0800 Subject: [PATCH] fix(send): add MyBatis Plus pagination interceptor so queryRecords returns correct total --- .../sino/mci/config/MybatisPlusConfig.java | 11 +++++++++ .../mci/config/MybatisPlusConfigTest.java | 23 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 backend/mci-server/src/test/java/com/sino/mci/config/MybatisPlusConfigTest.java diff --git a/backend/mci-server/src/main/java/com/sino/mci/config/MybatisPlusConfig.java b/backend/mci-server/src/main/java/com/sino/mci/config/MybatisPlusConfig.java index 2d88385..45ef922 100644 --- a/backend/mci-server/src/main/java/com/sino/mci/config/MybatisPlusConfig.java +++ b/backend/mci-server/src/main/java/com/sino/mci/config/MybatisPlusConfig.java @@ -1,7 +1,10 @@ package com.sino.mci.config; +import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.annotation.MapperScan; @@ -14,10 +17,18 @@ import javax.sql.DataSource; @MapperScan({"com.sino.mci.admin.repository", "com.sino.mci.channel.repository", "com.sino.mci.crm.repository", "com.sino.mci.flow.repository", "com.sino.mci.inbound.repository", "com.sino.mci.message.repository", "com.sino.mci.policy.repository", "com.sino.mci.send.repository"}) public class MybatisPlusConfig { + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } + @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource, MetaObjectHandler metaObjectHandler) throws Exception { MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean(); factoryBean.setDataSource(dataSource); + factoryBean.setPlugins(mybatisPlusInterceptor()); GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setMetaObjectHandler(metaObjectHandler); diff --git a/backend/mci-server/src/test/java/com/sino/mci/config/MybatisPlusConfigTest.java b/backend/mci-server/src/test/java/com/sino/mci/config/MybatisPlusConfigTest.java new file mode 100644 index 0000000..b0fb5da --- /dev/null +++ b/backend/mci-server/src/test/java/com/sino/mci/config/MybatisPlusConfigTest.java @@ -0,0 +1,23 @@ +package com.sino.mci.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class MybatisPlusConfigTest { + + @Test + void mybatisPlusInterceptorContainsPaginationInnerInterceptor() { + MybatisPlusConfig config = new MybatisPlusConfig(); + MybatisPlusInterceptor interceptor = config.mybatisPlusInterceptor(); + + assertNotNull(interceptor); + assertTrue( + interceptor.getInterceptors().stream().anyMatch(i -> i instanceof PaginationInnerInterceptor), + "MybatisPlusInterceptor should contain PaginationInnerInterceptor" + ); + } +}