基于ssm中dao接口@Param注解的用法
@Param 注解的用處:為了接口中方法的形參與xml文件中sql語句中的條件參數(shù)綁定
1.接口方法只有一個(gè)參數(shù)
完全沒必要使用@Param注解
例:
public interface PaperDao {
Paper queryById(long id);
}
此時(shí)相應(yīng)的xml文件中,#{}中可以填寫任意名稱
<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ān)于@Param注解使用的一些細(xì)節(jié)
1.首先先聲明一下該注解的功能,就是給參數(shù)進(jìn)行命名來找到對(duì)應(yīng)參數(shù),
舉個(gè)例子(例如在Mybatis的XXXMapper.xml文件中針對(duì)某個(gè)sql語句 比如根據(jù)id來查詢某個(gè)實(shí)體,那么假如我們傳入的參數(shù)列名為id,但是實(shí)體類的column確實(shí)userID,這時(shí)候我們可以將參數(shù)就行命名為userID,
這時(shí)候我們就可以根據(jù)這個(gè)命名找到該參數(shù),類似于該參數(shù)的一個(gè)“id”的感覺,這樣就可以將參數(shù)正確的注入sql語句中。
例如:
public int getUserDetail(@Param("userId") int id);
//這里我們就可以利用#{userId}來獲取到id的值 在執(zhí)行sql語句時(shí)候
還有一個(gè)好處就是使用該注解來聲明參數(shù)時(shí),使用#{}和KaTeX parse error: Expected 'EOF', got '#' at position 25: …會(huì)報(bào)錯(cuò),但是不使用的話就只能用#̲{}(一般多數(shù)情況都是#{},…${}會(huì)產(chǎn)生sql注入的問題。
但是這里我總結(jié)一個(gè)我用這個(gè)注解時(shí)候遇到的一個(gè)很坑的問題,就是在你調(diào)用某個(gè)帶有@Param注解的函數(shù)的時(shí)候,傳參數(shù)的時(shí)候就會(huì)報(bào)錯(cuò),這點(diǎn)需要注意
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Java ArrayList add(int index, E element)和set(int index, E el
今天小編就為大家分享一篇關(guān)于Java ArrayList add(int index, E element)和set(int index, E element)兩個(gè)方法的說明,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10
Java LinkedHashMap 底層實(shí)現(xiàn)原理分析
LinkedHashMap繼承自HashMap實(shí)現(xiàn)了Map接口?;緦?shí)現(xiàn)同HashMap一樣,不同之處在于LinkedHashMap保證了迭代的有序性。其內(nèi)部維護(hù)了一個(gè)雙向鏈表,解決了 HashMap不能隨時(shí)保持遍歷順序和插入順序一致的問題。2021-05-05
使用eclipse + maven一步步搭建SSM框架教程詳解
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三個(gè)開源框架整合而成,常作為數(shù)據(jù)源較簡(jiǎn)單的web項(xiàng)目的框架.這篇文章主要介紹了eclipse + maven搭建SSM框架 ,需要的朋友可以參考下2017-11-11
Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之二叉堆
二叉堆是一種特殊的堆,其實(shí)質(zhì)是完全二叉樹。二叉堆有兩種:最大堆和最小堆。最大堆是指父節(jié)點(diǎn)鍵值總是大于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值。而最小堆恰恰相反,指的是父節(jié)點(diǎn)鍵值總是小于任何一個(gè)子節(jié)點(diǎn)的鍵值2022-02-02

