@Param 注解的用處:為了接口中方法的形參與xml文件中sql語句中的條件參數綁定
1.接口方法只有一個參數
完全沒必要使用@Param注解
例:
1
2
3
|
public interface PaperDao { Paper queryById( long id); } |
此時相應的xml文件中,#{}中可以填寫任意名稱
1
2
3
4
5
|
< select id = "queryById" parameterType = "long" resultMap = "resultMap1" > SELECT paper_id,name,number,detail FROM paper WHERE paper_id=#{id} </ select > |
2.接口方法有多個參數
推薦使用@Param注解進行參數綁定
例:
1
2
|
public interface PaperDao { Paper queryById( @Param ( "id" ) long id, @Param ( "name" ) String name);} |
xm文件:
1
2
3
4
5
|
< 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注解使用的一些細節
1.首先先聲明一下該注解的功能,就是給參數進行命名來找到對應參數,
舉個例子(例如在Mybatis的XXXMapper.xml文件中針對某個sql語句 比如根據id來查詢某個實體,那么假如我們傳入的參數列名為id,但是實體類的column確實userID,這時候我們可以將參數就行命名為userID,
這時候我們就可以根據這個命名找到該參數,類似于該參數的一個“id”的感覺,這樣就可以將參數正確的注入sql語句中。
例如:
1
2
|
public int getUserDetail( @Param ( "userId" ) int id); //這里我們就可以利用#{userId}來獲取到id的值 在執行sql語句時候 |
還有一個好處就是使用該注解來聲明參數時,使用#{}和KaTeX parse error: Expected 'EOF', got '#' at position 25: …會報錯,但是不使用的話就只能用#?{}(一般多數情況都是#{},…${}會產生sql注入的問題。
但是這里我總結一個我用這個注解時候遇到的一個很坑的問題,就是在你調用某個帶有@Param注解的函數的時候,傳參數的時候就會報錯,這點需要注意
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。
原文鏈接:https://blog.csdn.net/DJ_coder/article/details/81050817