【為什麼要用 @param註解】
阿新 • • 發佈:2021-09-28
關於@param
這個註解在剛剛學習java的時候常會用到,但是為什麼要用呢?
關於@param這個註解的作用:
有一種觀點是使用@param可以和xml配置中的#{xxx} 對應,使用此註解後 ${}將無效,不過${}這種有sql注入的風險,現在用#{}才是主流(所以從這點上來看,所謂防sql注入並不是@param的功勞);
另外一種觀點就是對傳入引數的申明(宣告),比如介面傳入2個引數,其命名與SQL語句中的#{xxx}不一致,那麼引數的傳遞過程就會中斷,因為不知道哪個引數是sql需要的。
可能這才是@param的主要作用,尤其是當你用註解代替xml配置時(見下圖,用註解代替xml大概就是這樣子)
眼見為實
測試工具 :postman 本地測試(控制類註解改一下就可以,加個public:
@RequestMapping("public/v1/{organizationId}/users")
)
進行測試,大概三種情況:
控制層函式:
mapper.xml檔案
① :不使用@param註解,傳參為name和userName:發現是可以成功查詢的
② :不使用@param,變更介面引數name為name2,會報錯,發現獲取不到name這個引數
③: 使用@param註解,介面引數依舊用②中的name2,發現可以正常查詢到
總結:
總的來說,@param可以幫助介面傳遞引數給mapper檔案,可以允許引數名有小小的不一致(但是我為什麼要欄位不一致來給自己找麻煩...);
另外缺點也比較明顯,引數多的時候就不太好一個個加註解了,又臭又長(bushi),可以根據需求考慮用dto,vo來傳遞多個引數。所以,@param似乎並不是很重要。。(如果有我理解錯的地方也可以評論告訴我,畢竟某也只是個萌新)