希望数据库驱动支持配置。 com.alibaba.druid.util.JdbcUtils.getDriverClassName()方法中将驱动获取写死了,无法支持扩展,导致现在kingbase8驱动无法正常使用。
原提问者GitHub用户MrJiao
你提到的com.alibaba.druid.util.JdbcUtils.getDriverClassName()方法中将驱动类 hardcode 成具体的数据库驱动类,无法支持自定义或第三方驱动,导致Kingbase等数据库驱动无法使用。
这是一个限制,因为Druid目前主要针对主流数据库提供优化,没有考虑到所有可能的数据库驱动。
但是,有以下几种方式可以实现连接Kingbase数据库:
1.自定义Druid数据源类
在这几种方式中,自定义数据源类方式最为简单通用。
只需基于DruidDataSource自定义一个KingbaseDataSource,指定Kingbase驱动类即可。
对于Druid的数据库驱动获取,确实在com.alibaba.druid.util.JdbcUtils.getDriverClassName()方法中使用了硬编码的方式获取驱动类名,无法支持灵活的扩展。
要支持配置数据库驱动,请按照以下步骤进行:
com.alibaba.druid.util.JdbcUtils
类以修改代码。com.alibaba.druid.util.JdbcUtils
类,在getDriverClassName()
方法中查找以下代码行:if (url.startsWith("jdbc:mysql:")) {
return "com.mysql.jdbc.Driver";
} else if (url.startsWith("jdbc:oracle:")) {
return "oracle.jdbc.driver.OracleDriver";
}
// 其他数据库的驱动类判断逻辑...
jdbc:kingbase8:
开头):else if (url.startsWith("jdbc:kingbase8:")) {
return "org.postgresql.Driver"; // 或者您可以使用真正的Kingbase8驱动程序类名
}
com.alibaba.druid.util.JdbcUtils
类。通过这样的修改,你现在应该能够在Druid中使用Kingbase8驱动了。请确保在将来升级Druid时备份并恢复这些更改,以免被覆盖。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。