基于ssm中dao接口@Param注解的用法
@Param 注解的用處:為了接口中方法的形參與xml文件中sql語句中的條件參數綁定
1.接口方法只有一個參數
完全沒必要使用@Param注解
例:
public interface PaperDao {
Paper queryById(long id);
}
此時相應的xml文件中,#{}中可以填寫任意名稱
<select id="queryById" parameterType="long" resultMap="resultMap1">
SELECT paper_id,name,number,detail
FROM paper
WHERE paper_id=#{id}
</select>
2.接口方法有多個參數
推薦使用@Param注解進行參數綁定
例:
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整合過程關于@Param注解使用的一些細節(jié)
1.首先先聲明一下該注解的功能,就是給參數進行命名來找到對應參數,
舉個例子(例如在Mybatis的XXXMapper.xml文件中針對某個sql語句 比如根據id來查詢某個實體,那么假如我們傳入的參數列名為id,但是實體類的column確實userID,這時候我們可以將參數就行命名為userID,
這時候我們就可以根據這個命名找到該參數,類似于該參數的一個“id”的感覺,這樣就可以將參數正確的注入sql語句中。
例如:
public int getUserDetail(@Param("userId") int id);
//這里我們就可以利用#{userId}來獲取到id的值 在執(zhí)行sql語句時候
還有一個好處就是使用該注解來聲明參數時,使用#{}和KaTeX parse error: Expected 'EOF', got '#' at position 25: …會報錯,但是不使用的話就只能用#̲{}(一般多數情況都是#{},…${}會產生sql注入的問題。
但是這里我總結一個我用這個注解時候遇到的一個很坑的問題,就是在你調用某個帶有@Param注解的函數的時候,傳參數的時候就會報錯,這點需要注意
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
SpringBoot中TransactionTemplate事務管理的實現
Spring Boot提供了多種方式來管理事務,其中之一是使用TransactionTemplate,本文主要介紹了SpringBoot中TransactionTemplate事務管理的實現,具有一定的參考價值,感興趣的可以了解一下2024-04-04
詳解Spring Boot中使用@Scheduled創(chuàng)建定時任務
本篇文章中主要介紹了Spring Boot中使用@Scheduled創(chuàng)建定時任務,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03
關于jd-gui啟動報This?program?requires?Java?1.8+的錯誤問題及解決方法
最近,在Mac使用上JD-GUI啟動時總是報錯,接下來通過本文給大家介紹關于jd-gui啟動報this?program?requires?Java?1.8+的錯誤問題及解決方法,需要的朋友可以參考下2022-05-05
springboot在filter中如何用threadlocal存放用戶身份信息
這篇文章主要介紹了springboot中在filter中如何用threadlocal存放用戶身份信息,本文章主要描述通過springboot的filter類,在過濾器中設置jwt信息進行身份信息保存的方法,需要的朋友可以參考下2024-07-07

