IBATS如何调用mysql/oracle的function

来源:互联网 发布:死或生 mac 编辑:程序博客网 时间:2024/05/02 09:11

网上大多是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估计问题不大,没有进行测试)

原创粉丝点击