溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mybatis如何傳入多個參數(shù)的實現(xiàn)代碼

發(fā)布時間:2020-10-14 09:33:50 來源:腳本之家 閱讀:174 作者:培珺 欄目:編程語言

第一種方式:使用@Param注解方式

此種方式用法是我們在接口中寫方法的參數(shù)時,在每個參數(shù)的前面加上一個@Param注解即可。

該注解有一個value屬性,我們可以給加上注解的參數(shù)取個名字,在SQL語句中我們可以通過這個名字獲取參數(shù)值。

由于傳入了多個參數(shù),所以映射文件的入?yún)arameterType不用寫。

假如我們在接口的方法如下:

//根據(jù)傳入的用戶名和主鍵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參數(shù),存在的參數(shù)有name, id, param1, param2,那么我們按照控制臺說的來就可以了。

①按照指定的參數(shù)名

<update id="updateUserByManyParam">
 update user set username = #{name} where id = #{id}
</update>

②按照參數(shù)的順序

<update id="updateUserByManyParam">
  update user set username = #{param1} where id = #{param2}
</update>

第二種方式:按照參數(shù)的編寫順序

此種方式我們在傳入?yún)?shù)的時候什么都不用做就行了,只要在SQL語句中按照規(guī)則獲取參數(shù)值即可。

假如我們在接口的方法如下:

//根據(jù)傳入的用戶名和主鍵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, param1, param2]
 

從錯誤信息我們可以看到,它說找不到ddd參數(shù),存在的參數(shù)有arg1, arg0, param1, param2,那么我們按照控制臺說的來就可以了。

①按照參數(shù)的順序

<update id="updateUserByManyParam">
  update user set username = #{arg0} where id = #{arg1}
</update>
 

②按照參數(shù)的順序

<update id="updateUserByManyParam">
  update user set username = #{param1} where id = #{param2}
</update>

總結(jié)

  • 使用@Param注解方式,在SQL語句中我們可以按照自定義的名稱獲取參數(shù)值,也可以用param1、param2、…順序來獲取參數(shù)值。
  • 直接傳入?yún)?shù),在SQL語句中按照參數(shù)傳遞的順序,利用arg1、arg2、…順序獲得對應(yīng)的參數(shù)值。
  • 直接傳入?yún)?shù),在SQL語句中按照參數(shù)傳遞的順序,利用param1、param2、…順序來獲取參數(shù)值。

注意:param后面的數(shù)字是從1開始的,而arg后面的數(shù)字是從0開始的。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI