mybatis中@Param注解總是報(bào)取不到參數(shù)問(wèn)題及解決
@Param注解總是報(bào)取不到參數(shù)
springboot+mybatis項(xiàng)目中,在mapper 層傳多個(gè)參數(shù),請(qǐng)求時(shí)總是報(bào)參數(shù)取不到,快瘋了,我發(fā)誓xml層沒(méi)問(wèn)題,mapper層參數(shù)名也沒(méi)問(wèn)題
錯(cuò)誤如下
百度了好久,一直讓我檢查.xml文件是否存在問(wèn)題,各種方法都嘗試遍了,沒(méi)用。。。
最后檢查來(lái)檢查去發(fā)現(xiàn)自己@param注解包導(dǎo)錯(cuò)了,param注解應(yīng)該用的是ibatis包的,而我導(dǎo)錯(cuò)了,如下:
我用的idea工具開(kāi)發(fā),直接alt+回車(chē)鍵快捷導(dǎo)入包,沒(méi)太注意引錯(cuò)了,編譯也沒(méi)報(bào)錯(cuò),坑。。。。
應(yīng)該導(dǎo)入:import org.apache.ibatis.annotations.Param,ibatis是mybatis的前身,mybatis是由ibatis發(fā)展而來(lái)。
注意:
其實(shí)就是個(gè)很小的問(wèn)題,還有個(gè)需要注意的就是在mapper 層,如果只有一個(gè)參數(shù)不需要@param注解,如果有多個(gè)參數(shù),必須要@param()注解,指明每個(gè)參數(shù)的參數(shù)名,否則也會(huì)報(bào)找不到參數(shù)問(wèn)題,因?yàn)?mybatis注解配置使用ognl表達(dá)式,這樣才能正常的通過(guò)注解傳值和取值多個(gè)參數(shù)的問(wèn)題。
@Param注解詳細(xì)使用方法
1.@Param這個(gè)注解是用來(lái)解決接口方法有多個(gè)參數(shù)時(shí)
xxMapper.xml文件綁定參數(shù)混淆問(wèn)題。
需要在DAO方法形參前面添加@Param(“xxx”),來(lái)區(qū)分不同的需要綁定到xxMapper.xml的參數(shù)。
注意雙引號(hào)里的值要與xxMapper.xml中#{}中的值相等,如:
DAO方法:
public void list (@Param(“abc1”) String abc1, @Param(“abc2”) String abc2);
xxMapper.xml中:
values(#{abc1},#{abc2}
2.可以修飾JavaBean對(duì)象、Map集合等
如:
public void list (@Param(“param”) User user);
xxMapper.xml中:
where username = #{param.userName} List getUser(@Param(“param”) Map map);
xxMapper.xml中values:
(#{param.id},#{param.name},#{param.age},#{param.sex})
3.@Param參數(shù)其實(shí)可加可不加
不加的話(huà)按照順序依次取出,如參數(shù)User user中userName和password的值添加到#{userName}#{password}。
但是當(dāng)DAO方法里多個(gè)參數(shù)沒(méi)有封裝在一個(gè)Javabean中時(shí),則必須加。或者DAO方法參數(shù)里有一個(gè)以上的JavaBean、集合等情況下也必須加,如:
@Param(“user”) User user, @Param(“example”) Map map
4.使用@Param注解好處
方法參數(shù)名可以不與xxMapper.xml一致,但是注意@Param("")里面的值要與要與xxMapper.xml中#{}里的值一致就可以了,如:
@Param(“user123”) User user #{user123.userName}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09SpringBoot利用jackson格式化時(shí)間的三種方法
日常開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)使用json進(jìn)行數(shù)據(jù)的傳輸,這就涉及到了對(duì)象和json的相互轉(zhuǎn)化,常用的解決方案有:Jackson(推薦)、谷歌的Gson、阿里的Fastjson,這篇文章主要給大家介紹了關(guān)于SpringBoot如何利用jackson格式化時(shí)間的相關(guān)資料,需要的朋友可以參考下2021-06-06IDEA神器一鍵查看Java字節(jié)碼及其他類(lèi)信息插件
這篇文章主要為大家介紹了一款I(lǐng)DEA神器,可以一鍵查看Java字節(jié)碼及其他類(lèi)信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01Java StringBuilder類(lèi)相關(guān)知識(shí)總結(jié)
這篇文章主要介紹了Java StringBuilder類(lèi)相關(guān)知識(shí)總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Spring AOP如何自定義注解實(shí)現(xiàn)審計(jì)或日志記錄(完整代碼)
這篇文章主要介紹了Spring AOP如何自定義注解實(shí)現(xiàn)審計(jì)或日志記錄(完整代碼),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Java實(shí)現(xiàn)Html轉(zhuǎn)Pdf的方法
這篇文章主要介紹了Java實(shí)現(xiàn)Html轉(zhuǎn)Pdf的方法,實(shí)例分析了java基于ITextRenderer類(lèi)操作頁(yè)面及系統(tǒng)自帶字體生成pdf文件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07