基于ssm中dao接口@Param注解的用法
@Param 注解的用處:為了接口中方法的形參與xml文件中sql語句中的條件參數(shù)綁定
1.接口方法只有一個參數(shù)
完全沒必要使用@Param注解
例:
public interface PaperDao {
Paper queryById(long id);
}
此時相應(yīng)的xml文件中,#{}中可以填寫任意名稱
<select id="queryById" parameterType="long" resultMap="resultMap1">
SELECT paper_id,name,number,detail
FROM paper
WHERE paper_id=#{id}
</select>
2.接口方法有多個參數(shù)
推薦使用@Param注解進行參數(shù)綁定
例:
public interface PaperDao {
Paper queryById(@Param("id") long id,@Param("name") String name);}
xm文件:
<select id="queryById" parameterType="long" resultMap="resultMap1">
SELECT paper_id,name,number,detail
FROM paper
WHERE paper_id=#{id} AND name=#{name}
</select>
補充:SSM整合過程關(guān)于@Param注解使用的一些細(xì)節(jié)
1.首先先聲明一下該注解的功能,就是給參數(shù)進行命名來找到對應(yīng)參數(shù),
舉個例子(例如在Mybatis的XXXMapper.xml文件中針對某個sql語句 比如根據(jù)id來查詢某個實體,那么假如我們傳入的參數(shù)列名為id,但是實體類的column確實userID,這時候我們可以將參數(shù)就行命名為userID,
這時候我們就可以根據(jù)這個命名找到該參數(shù),類似于該參數(shù)的一個“id”的感覺,這樣就可以將參數(shù)正確的注入sql語句中。
例如:
public int getUserDetail(@Param("userId") int id);
//這里我們就可以利用#{userId}來獲取到id的值 在執(zhí)行sql語句時候
還有一個好處就是使用該注解來聲明參數(shù)時,使用#{}和KaTeX parse error: Expected 'EOF', got '#' at position 25: …會報錯,但是不使用的話就只能用#̲{}(一般多數(shù)情況都是#{},…${}會產(chǎn)生sql注入的問題。
但是這里我總結(jié)一個我用這個注解時候遇到的一個很坑的問題,就是在你調(diào)用某個帶有@Param注解的函數(shù)的時候,傳參數(shù)的時候就會報錯,這點需要注意
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Java多線程并發(fā)之線程池任務(wù)請求攔截測試實例
這篇文章主要介紹了Java多線程并發(fā)之線程池任務(wù)請求攔截測試實例,隊列中永遠(yuǎn)沒有線程被加入,即使線程池已滿,也不會導(dǎo)致被加入排隊隊列,實現(xiàn)了只有線程池存在空閑線程的時候才會接受新任務(wù)的需求,需要的朋友可以參考下2023-12-12
MyBatis實現(xiàn)動態(tài)SQL的實現(xiàn)方法
這篇文章主要介紹了MyBatis實現(xiàn)動態(tài)SQL的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
SpringBoot中TransactionTemplate事務(wù)管理的實現(xiàn)
Spring Boot提供了多種方式來管理事務(wù),其中之一是使用TransactionTemplate,本文主要介紹了SpringBoot中TransactionTemplate事務(wù)管理的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-04-04
詳解Spring Boot中使用@Scheduled創(chuàng)建定時任務(wù)
本篇文章中主要介紹了Spring Boot中使用@Scheduled創(chuàng)建定時任務(wù),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03
Java Swing JButton按鈕的實現(xiàn)示例
這篇文章主要介紹了Java Swing JButton按鈕的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
關(guān)于jd-gui啟動報This?program?requires?Java?1.8+的錯誤問題及解決方法
最近,在Mac使用上JD-GUI啟動時總是報錯,接下來通過本文給大家介紹關(guān)于jd-gui啟動報this?program?requires?Java?1.8+的錯誤問題及解決方法,需要的朋友可以參考下2022-05-05
springboot在filter中如何用threadlocal存放用戶身份信息
這篇文章主要介紹了springboot中在filter中如何用threadlocal存放用戶身份信息,本文章主要描述通過springboot的filter類,在過濾器中設(shè)置jwt信息進行身份信息保存的方法,需要的朋友可以參考下2024-07-07

