Mybatis如何傳入多個引數的實現程式碼
阿新 • • 發佈:2020-01-07
第一種方式:使用@Param註解方式
此種方式用法是我們在介面中寫方法的引數時,在每個引數的前面加上一個@Param註解即可。
該註解有一個value屬性,我們可以給加上註解的引數取個名字,在SQL語句中我們可以通過這個名字獲取引數值。
由於傳入了多個引數,所以對映檔案的入參ParameterType不用寫。
假如我們在介面的方法如下:
//根據傳入的使用者名稱和主鍵id去修改使用者名稱 int updateUserByManyParam(@Param("name")String username,@Param("id")Integer id);
我們先在對映檔案裡面瞎寫看看控制檯會報什麼錯誤:
//錯誤例項: <update id="updateUserByManyParam"> update user set username = #{name1} where id = #{oid} </update>
好了,看看控制檯報了什麼錯:
//錯誤資訊 Cause: org.apache.ibatis.binding.BindingException: Parameter 'name1' not found. Available parameters are [name,id,param1,param2]
從錯誤資訊我們可以看到,它說找不到name1引數,存在的引數有name,param2,那麼我們按照控制檯說的來就可以了。
①按照指定的引數名
<update id="updateUserByManyParam"> update user set username = #{name} where id = #{id} </update>
②按照引數的順序
<update id="updateUserByManyParam"> update user set username = #{param1} where id = #{param2} </update>
第二種方式:按照引數的編寫順序
此種方式我們在傳入引數的時候什麼都不用做就行了,只要在SQL語句中按照規則獲取引數值即可。
假如我們在介面的方法如下:
//根據傳入的使用者名稱和主鍵id去修改使用者名稱 int updateUserByManyParam(@Param("name")String username,@Param("id")Integer id);
我們和上面一樣,先在對映檔案裡面瞎寫看看控制檯會報什麼錯誤:
//錯誤例項: <update id="updateUserByManyParam"> update user set username = #{ddd} where id = #{fff} </update>
好了,看看控制檯報了什麼錯:
//錯誤資訊: Cause: org.apache.ibatis.binding.BindingException: Parameter 'ddd' not found. Available parameters are [arg1,arg0,param2]
從錯誤資訊我們可以看到,它說找不到ddd引數,存在的引數有arg1,param2,那麼我們按照控制檯說的來就可以了。
①按照引數的順序
<update id="updateUserByManyParam"> update user set username = #{arg0} where id = #{arg1} </update>
②按照引數的順序
<update id="updateUserByManyParam"> update user set username = #{param1} where id = #{param2} </update>
總結
- 使用@Param註解方式,在SQL語句中我們可以按照自定義的名稱獲取引數值,也可以用param1、param2、…順序來獲取引數值。
- 直接傳入引數,在SQL語句中按照引數傳遞的順序,利用arg1、arg2、…順序獲得對應的引數值。
- 直接傳入引數,在SQL語句中按照引數傳遞的順序,利用param1、param2、…順序來獲取引數值。
注意:param後面的數字是從1開始的,而arg後面的數字是從0開始的。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。