IBATS如何調用mysql/oracle的function

網上大多是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估計問題不大,沒有進行測試)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章