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

