MyBatis Plus 达梦数据库 分页查询异常问题
一、问题背景
根据博客《SpringBoot MyBatis Plus 整合 达梦数据库》中提到分页查询问题,如果没有配置 MybatisPlusConfig.java 文件,会出现如下现象:
数据表 PRODUCTION.PRODUCT_CATEGORY 中的数据如下:
调用如下查询接口:
http://localhost:8080/productCategory/page?pageNum=1&pageSize=3
查询效果如下:
从上图可知,数据没有按照预期的分页效果返回。
二、解决方案
在工程启动类的同级目录下,添加配置类 MybatisPlusConfig.java,其内容如下:
package com.miracle.dm; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author: Miracle Luna * @date: 2023/10/17 13:36 * @description: */ @Configuration @MapperScan("com.miracle.dm.mapper") public class MybatisPlusConfig { /** * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除) * 如果不加如下配置,分页查询会出现异常 */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // DM("dm", "达梦数据库") interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.DM)); return interceptor; } }
再次调用分页查询接口,查询效果如下:
从上图可知,数据是按照预期的分页效果返回的。
PS:
枚举类 DbType.java 内容如下:
package com.baomidou.mybatisplus.annotation; public enum DbType { MYSQL("mysql", "MySql数据库"), MARIADB("mariadb", "MariaDB数据库"), ORACLE("oracle", "Oracle11g及以下数据库(高版本推荐使用ORACLE_NEW)"), ORACLE_12C("oracle12c", "Oracle12c+数据库"), DB2("db2", "DB2数据库"), H2("h2", "H2数据库"), HSQL("hsql", "HSQL数据库"), SQLITE("sqlite", "SQLite数据库"), POSTGRE_SQL("postgresql", "Postgre数据库"), SQL_SERVER2005("sqlserver2005", "SQLServer2005数据库"), SQL_SERVER("sqlserver", "SQLServer数据库"), DM("dm", "达梦数据库"), XU_GU("xugu", "虚谷数据库"), KINGBASE_ES("kingbasees", "人大金仓数据库"), PHOENIX("phoenix", "Phoenix HBase数据库"), GAUSS("zenith", "Gauss 数据库"), CLICK_HOUSE("clickhouse", "clickhouse 数据库"), GBASE("gbase", "南大通用(华库)数据库"), GBASE_8S("gbase-8s", "南大通用数据库 GBase 8s"), /** @deprecated */ @Deprecated GBASEDBT("gbasedbt", "南大通用数据库"), /** @deprecated */ @Deprecated GBASE_INFORMIX("gbase 8s", "南大通用数据库 GBase 8s"), SINODB("sinodb", "星瑞格数据库"), OSCAR("oscar", "神通数据库"), SYBASE("sybase", "Sybase ASE 数据库"), OCEAN_BASE("oceanbase", "OceanBase 数据库"), FIREBIRD("Firebird", "Firebird 数据库"), HIGH_GO("highgo", "瀚高数据库"), CUBRID("cubrid", "CUBRID数据库"), GOLDILOCKS("goldilocks", "GOLDILOCKS数据库"), CSIIDB("csiidb", "CSIIDB数据库"), SAP_HANA("hana", "SAP_HANA数据库"), IMPALA("impala", "impala数据库"), VERTICA("vertica", "vertica数据库"), XCloud("xcloud", "行云数据库"), REDSHIFT("redshift", "亚马逊redshift数据库"), OPENGAUSS("openGauss", "华为 opengauss 数据库"), TDENGINE("TDengine", "TDengine数据库"), INFORMIX("informix", "Informix数据库"), UXDB("uxdb", "优炫数据库"), LEALONE("lealone", "Lealone数据库"), OTHER("other", "其他数据库"); private final String db; private final String desc; public static DbType getDbType(String dbType) { DbType[] var1 = values(); int var2 = var1.length; for(int var3 = 0; var3 < var2; ++var3) { DbType type = var1[var3]; if (type.db.equalsIgnoreCase(dbType)) { return type; } } return OTHER; } public String getDb() { return this.db; } public String getDesc() { return this.desc; } private DbType(final String db, final String desc) { this.db = db; this.desc = desc; } }
标签:String,DbType,数据库,db,查询,Plus,MyBatis,达梦,分页 From: https://www.cnblogs.com/miracle-luna/p/17774518.html