Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)的两种解决方案
原因:
利用mybatis插入空值给数据库;mysql能够正常执行,而Oracle却抛出异常;
这两种截然不同的表现给程序员造成了困扰,那么这个抛异常的锅到底应该是谁来背呢?
当然是mybatis来背锅喽。oracle和mysql都根据jdbc接口来提供了自己的实现方法,
而mybatis作为一个封装了JDBC的框架,没有封装到位,出现了相同的方法在不同数据库的兼容问题。
1、第一种方式,如出错信息中提到的,需要在每个数据变量那里设置相应的jdbcType,示例如下(加粗加下划线部分的内容):
insert into user
(name,address,age)
values
(
#{name,jdbcType=VARCHAR},
#{address,jdbcType=VARCHAR},
#{age,jdbcType=NUMERIC},
)
2、第二种方式,MyBatis-config.xml 中设置当JDBC类型为空值时,要指定的值得,默认为OTHER,我们指定为NULL就好了(注意是大写的NULL)。
MyBatis-config.xml配置
附常见mybatis配置文件