0

我们有一个使用 iBatis 完成的 Oracle 过程调用。该过程的 IN 参数之一是过程中的 VARCHAR2 数据类型,并且是服务/DAO 层中的 java.lang.String。

只要此输入参数以 NULL 值传递,该过程就会失败。当一个值被传递时,该过程被调用而没有任何错误。

对于 中的这个过程参数(可以为空)parametermap,我们将属性设置为jdbctype="java.sql.Types.NULL"并且它开始工作。

这是正确的解决方案吗?

数据库连接是使用在 Tomcat6 服务器中创建的连接池 (dbcp) 建立的。

4

2 回答 2

0

Ibatis 肯定在将 NULL 值作为参数传递时存在问题。在我们的插入查询中,我们使用这样的包装器:

insert into table (column1) values (<isNull property="column1">NULL </isNull><isNotNull property="column1">#column1:INT# </isNotNull>)
于 2012-09-05T11:47:55.817 回答
0

对于那些仍在使用旧版本的 ibatis(在我的情况下为 2.3)的用户,在传递可空参数时出现上述错误可能是由于未在 parameterMap 中指定 jdbcType 造成的。iBatis 2.3.0 User Guide (p.27, Parameter Maps and Inline Parameters - jdbcType) 中有一段指出了这一点。

于 2018-02-27T09:59:27.187 回答