最近在DB2环境下使用iBATIS时碰到一点问题:当值(参数)对象包含空值(null)的参数属
性并传递给iBATIS进行Insert、Update操作时,会发生异常,不能保存成功,此时数据
库字段是可以为空的。
跟据别人的提示,我也看了iBATIS的代码,发现iBATIS使用的是prepareStatement进行
的sql执行,在没有显示mapping定义数据类型的情况下,首先使用参数值的java类型决
定传输给prepareStatement的参数类型,然后使用 Type.OTHER 进行输入,如果参数是
值是null,则只能使用 Type.OTHER 了。在DB2的driver下,该方式不能正确执行。
要解决这个问题,就要在mapping中显示声明参数(列)的类型:
1、对于bean参数进行可以如下声明:
<insert id="xxxxInsert" parameterClass="xxx.xxxx.Xxxxx">
<sql>
insert into XXXX (XXXX) VALUES (#xxxx:VARCHAR#)
</sql>
</insert>
2、对于map参数 怎可以使用parameterMap定义每个参数的类型
<parameterMap class="xxx.xxxx.Xxxxx" id="xxxxMap">
<parameter property="xxxx" typeName="VARCHAR" />
</parameterMap>
对于可以使用什么类型名,可以看看代码....Types就可以.
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=679495