在使用 Mybatis-Plus 与 YashanDB 数据库集成开发时,有开发者遇到如下问题:

分页功能无法使用,控制台报错提示 “other database not supported”

这类问题其实源于 Mybatis-Plus 框架默认并不支持 YashanDB 的数据库方言识别,但只需简单配置即可规避。

一、问题现象描述

当业务系统启用了 Mybatis-Plus 的分页插件,并连接 YashanDB 数据库时,在运行分页查询时抛出如下异常:

Mybatis Plus Cannot Read Database type or The Database's Not Supported!

日志中提示数据库类型未被识别,分页功能因方言缺失无法执行。

二、问题分析

Mybatis-Plus 在分页插件中会自动识别 JDBC URL 中的数据库类型。其源码 JdbcUtils.getDbType(String jdbcUrl) 中的数据库类型判断逻辑如下:


​
if (url.contains(":mysql:")) {
    return DbType.MYSQL;
} else if (url.contains(":oracle:")) {
    return DbType.ORACLE;
// …… 省略其他类型
} else {
    logger.warn("Mybatis Plus Cannot Read Database type or The Database's Not Supported!");
    return DbType.OTHER;
}

但当前版本的 Mybatis-Plus 中,并没有包含 :yasdb: 或 :yashandb: 的判断逻辑,最终默认被归为 DbType.OTHER,分页语法也就无法生成。

三、解决方案

方案一:手动配置分页插件的方言(推荐)

为分页插件强制指定数据库类型即可绕过自动识别错误。建议选择兼容度高的 Oracle 或 MySQL 方言:

​
@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));
        return interceptor;
    }
}
​

注意:目前 YashanDB 的 SQL 语法在分页层面对 Oracle 方言的兼容性更好,推荐优先选择 DbType.ORACLE。

四、其他兼容性建议

image.png
五、总结

image.png


数据库砖家
1 声望0 粉丝