写点什么

YashanDB|Mybatis-Plus 无法识别 YashanDB? 加一段配置就能解决

作者:数据库砖家
  • 2025-04-24
    广东
  • 本文字数:804 字

    阅读完需:约 3 分钟

在使用 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 方言:

@Configurationpublic class MybatisPlusConfig {    @Bean    public MybatisPlusInterceptor mybatisPlusInterceptor() {        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));        return interceptor;    }}
复制代码

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

四、其他兼容性建议

五、总结


用户头像

还未添加个人签名 2025-04-09 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB|Mybatis-Plus 无法识别 YashanDB?加一段配置就能解决_数据库·_数据库砖家_InfoQ写作社区