1. 程式人生 > 程式設計 >Mybatis如何傳入多個引數的實現程式碼

Mybatis如何傳入多個引數的實現程式碼

第一種方式:使用@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開始的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。