您当前的位置:首页 > 互联网教程

mybatis通过jdbc连接330版本数据库,插入数据报错

发布时间:2025-05-19 22:40:28    发布人:远客网络

mybatis通过jdbc连接330版本数据库,插入数据报错

一、mybatis通过jdbc连接330版本数据库,插入数据报错

1、java.lang.NoSuchFieldError: exceptionOverride是一个常见的 Java错误。通常,这个错误是由于在编译应用程序时使用的类库版本与运行时使用的类库版本不同导致的。

2、MyBatis是一个持久层框架,可以通过 JDBC连接到不同类型的数据库。在连接 GBase330数据库时,您需要确保在编译应用程序时使用的 MyBatis类库版本与运行时使用的 MyBatis类库版本相同。如果两者不同,则可能会出现上述错误。

3、除此之外,还有一些其他因素可能会导致这个错误,例如在编译应用程序时,您引用了一个不存在的字段或方法。如果您遇到了这个错误,建议您检查您的代码,确保所有类库版本一致,并检查您的代码是否引用了不存在的字段或方法。

二、mybatis怎么实现两种数据库的兼容

方法:在系统运行过程中,针对不同数据库类型区分加载不同文件路径下的sqlmap配置。留给开发人员做的事依旧是快乐地编写原始数据库语句,而不再为多数据库兼容问题挠头。

1、解决ibatis多数据库兼容的问题,实际上就是让ibatis可以自动选择不同数据库sqlmap配置文件。

2、打开ibatis源码工程并进行代码跟踪,最终定位到com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.java处,系统中运行的sqlmap节点均从这里统一转化加载的。

3、很明显SqlMapConfigParser源码中的addSqlMapNodelets负责解析“/sqlMapConfig/sqlMap”路径,即也就是sqlmap文件路径。

4、要实现“多数据库兼容”,这里改造下这个方法即可。

1、首选我们在<setting>节点新增一个“DBProductName”用于判断数据库种类。当然通过java.sql.DatabaseMetaData也可以获得,但这太依赖于jdbc驱动,还是手动配置保险。

2、重构SqlMapConfigParser的addSqlMapNodelets方法。

" 1)首选获得单个sqlmap文件的位置,如 sqlmap主目录\XXX.xml;

2)依据上面设置的DBProductName属性值获得数据库类型;

3)将sqlmap的文件路径重定位到运行数据库类型文件下。如 sqlmap主目录\mysql\XXX.xml,代表程序当前运行于msql数据库上,并加载系统mysql数据库对应的 sqlmap文件"

4、ok,现在ibatis支持“多数据库兼容”了(完整源码见附件)。

1、编译SqlMapConfigParser.java生成可运行文件SqlMapConfigParser.class(见附件),并将其覆盖添加到ibatis.jar中。

2、在系统sqlmap配置文件存放主目录如src\conf\mapping添加多数据库兼容支持的子目录,如src\conf\mapping\mysql,src\conf\mapping\oracle等

3、以实际项目需要编写多数据库sqlmap配置文件。注意:不同数据库类型需要确保具有相同的sqlmap配置文件名和sql节点名

4、在ibatis主配置文件(如sql-map-config.xml)中,<setting>指定当前程序运行数据库类型

三、SpringBoot+mybatis-plus+人大金仓数据库配置

配置数据源时,首先设定默认数据源或者数据源组为“master”,并启用严格匹配数据源模式,即当未匹配到指定数据源时,系统将抛出异常。具体配置如下:

primary: master#设置默认的数据源或者数据源组,默认值即为master

strict: true#严格匹配数据源,默认false。true未匹配到指定数据源时抛异常,false使用默认数据源

url: jdbc:kingbase8://127.0.0.1:54321/数据库名称?currentSchema=模式&characterEncoding=UTF-8

driver-class-name: com.kingbase8.Driver

另外,需要注意的是,使用dynamic-datasource-spring-boot-starter时,版本至少需要升级到3.5.0。