基于ssm中dao接口@Param注解的用法
@Param 注解的用處:為了接口中方法的形參與xml文件中sql語句中的條件參數(shù)綁定
1.接口方法只有一個參數(shù)
完全沒必要使用@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.接口方法有多個參數(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整合過程關于@Param注解使用的一些細節(jié)
1.首先先聲明一下該注解的功能,就是給參數(shù)進行命名來找到對應參數(shù),
舉個例子(例如在Mybatis的XXXMapper.xml文件中針對某個sql語句 比如根據id來查詢某個實體,那么假如我們傳入的參數(shù)列名為id,但是實體類的column確實userID,這時候我們可以將參數(shù)就行命名為userID,
這時候我們就可以根據這個命名找到該參數(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ù)情況都是#{},…${}會產生sql注入的問題。
但是這里我總結一個我用這個注解時候遇到的一個很坑的問題,就是在你調用某個帶有@Param注解的函數(shù)的時候,傳參數(shù)的時候就會報錯,這點需要注意
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
Java ArrayList add(int index, E element)和set(int index, E el
今天小編就為大家分享一篇關于Java ArrayList add(int index, E element)和set(int index, E element)兩個方法的說明,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10Java LinkedHashMap 底層實現(xiàn)原理分析
LinkedHashMap繼承自HashMap實現(xiàn)了Map接口?;緦崿F(xiàn)同HashMap一樣,不同之處在于LinkedHashMap保證了迭代的有序性。其內部維護了一個雙向鏈表,解決了 HashMap不能隨時保持遍歷順序和插入順序一致的問題。2021-05-05使用eclipse + maven一步步搭建SSM框架教程詳解
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三個開源框架整合而成,常作為數(shù)據源較簡單的web項目的框架.這篇文章主要介紹了eclipse + maven搭建SSM框架 ,需要的朋友可以參考下2017-11-11