网上大多是ibats对oracle存储过程和函数的配置,由于oracle驱动支持在java代码中用call调用function,所以网上的配置也是正确的:
<parameterMap id="CommandDeleteById" class="java.util.Map">
<parameter property="result" jdbcType="VARCHAR"
javaType="java.lang.String" mode="OUT" />
<parameter property="commandId" jdbcType="NUMBER"
javaType="java.lang.Integer" mode="IN" />
<parameter property="commandsetId" jdbcType="NUMBER"
javaType="java.lang.Integer" mode="IN" />
<parameter property="dbId" jdbcType="NUMBER"
javaType="java.math.BigDecimal" mode="IN" />
</parameterMap>
<procedure id="Command_deleteById"
parameterMap="CommandDeleteById">
{ ? = call truleadmin.DeleteCommand(?,?,?)}
</procedure>但是mysql是不支持call function这种写法的,我估计在配置文件中这样写也会报错(没有测试上面的方法是否有效)。
其实ibats 调用 mysql的function是非常简单的,mysql也有dual这个保留字,所以我们可以想象用select functionname() result from dual这样的写法获得function的返回值,那ibats配置文件就完全可以用<select></select>去调用function。
如此简单的方法,估计将数据库换成oracle也是同样适用的!(mysql测试OK,oracle估计问题不大,没有进行测试)
本文详细介绍了如何利用iBatis框架在MySQL和Oracle数据库中调用Function与存储过程,并通过代码示例展示了配置与调用方法的区别。对于希望在不同数据库间灵活切换的开发者来说,此教程极具实用价值。

1405

被折叠的 条评论
为什么被折叠?



