使用iBatis将NULL值传递给过程时出错

时间:2012-08-16 16:07:11

标签: oracle null ibatis procedure apache-commons-dbcp

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

只要此输入参数以NULL值传递,过程就会失败。传递值时,将调用该过程而不会出现任何错误。

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

这是正确的解决方案吗?

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

2 个答案:

答案 0 :(得分:0)

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

insert into table (column1) values (<isNull property="column1">NULL </isNull><isNotNull property="column1">#column1:INT# </isNotNull>)

答案 1 :(得分:0)

对于那些仍然使用旧版本的ibatis(在我的情况下是2.3),传递可空参数时的上述错误可能是由于未在parameterMap中指定jdbcType引起的。在iBatis 2.3.0 User Guide(第27页,参数地图和内联参数 - jdbcType)中有一个指向它的段落。