mybatis中傳入多個參數(shù)的解決方法

問題引入

想必大家可能遇到過類似的錯誤,當(dāng)傳入多個參數(shù)時,映射文件無法獲得傳入的參數(shù)


我的例子

// javabean
public class User {
    private int id;
    private String name;
    private byte age;
    // 忽略了getter、setter方法
}

// 接口
public interface UserMapper {
    List<User> select(String name,byte age);
}
// 映射文件
<select id="select" resultType="model.User">
    select * from `user` where name = #{id} and age =#{age}
</select>

1. 利用參數(shù)出現(xiàn)的順序

Parameter ‘id’ not found. Available parameters are [arg1, arg0, param1, param2],這句話的意思就是id找不到,可用的參數(shù)是[arg1, arg0, param1, param2]。所以可使用參數(shù)出現(xiàn)的順序號碼引用參數(shù)恒序,第一個參數(shù)用arg0或param1表示,第二個參數(shù)用arg1或param2表示谁撼,以此類推(arg從0開始計數(shù)歧胁,param從1開始計數(shù))。

修改xml為如下方式:

<select id="select" resultType="model.User">
    select * from `user` where name = #{arg0} and age =#{arg1}
</select>
// or
<select id="select" resultType="model.User">
    select * from `user` where name = #{param1} and age =#{param2}
</select>

2.使用注解

給接口中方法的參數(shù)加上注解厉碟,xml不變

public interface UserMapper {
    List<User> select(@Param("name") String name,@Param("age") byte age);
}

3.使用map

3.1把接口的形參改為Map

// 接口
public interface UserMapper {
    List<User> select(Map params);
}

3.2 把需要的參數(shù)封裝在map中

Map params = new HashMap();
params.put("name", "王尼瑪");
params.put("age", 32);
List<User> list = userMapper.select(params);

4.把參數(shù)封裝在Javabean中

4.1 把接口的形參改為javabean

// 接口
public interface UserMapper {
    List<User> select(User user);
}

4.2 把需要的參數(shù)封裝在javabean中

User user = new User();
user.setName("四");
user.setAge((byte)43);
List<User> list = userMapper.select(user); 

so,我覺得應(yīng)該把題目改為喊巍,mybatis中傳入多個參數(shù)的2個解決方法。畢竟3箍鼓、4是通過把多個參數(shù)轉(zhuǎn)化為1個參數(shù)的方式解決問題的崭参,哈哈。

5 拓展(接口中傳入?yún)?shù)的各種情況)

5.1 當(dāng)只有一個參數(shù)時

使用arg0,param1獲得參數(shù)是一直有效的款咖,但是個人不推薦這樣做何暮,畢竟看起來不優(yōu)雅

5.1.1 參數(shù)是基本類型

xml中標(biāo)簽內(nèi)的變量名可以隨便寫奄喂,#{id},#{ids}海洼,#{123}跨新,#{xxgdsgdg},等都可以獲得到參數(shù)。

5.1.2 參數(shù)是javabean

xml中標(biāo)簽內(nèi)直接填寫Javabean中的屬性名

5.1.3 參數(shù)是數(shù)組

使用array獲得參數(shù)贰军,再用foreach循環(huán)

5.1.4 參數(shù)是List

使用list或collection獲得參數(shù)玻蝌,再用foreach循環(huán)

5.1.5 參數(shù)是Set

使用collection獲得參數(shù)蟹肘,再用foreach循環(huán)

5.2 當(dāng)有多個參數(shù)時

使用argN词疼、paramN或@param定位到某個參數(shù),再靈活使用ognl就ok了帘腹。比如#{user.name}贰盗、#{users[0].name}。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阳欲,一起剝皮案震驚了整個濱河市舵盈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌球化,老刑警劉巖秽晚,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異筒愚,居然都是意外死亡赴蝇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門巢掺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來句伶,“玉大人,你說我怎么就攤上這事陆淀】加啵” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵轧苫,是天一觀的道長楚堤。 經(jīng)常有香客問我,道長含懊,這世上最難降的妖魔是什么钾军? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮绢要,結(jié)果婚禮上吏恭,老公的妹妹穿的比我還像新娘。我一直安慰自己重罪,他們只是感情好樱哼,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布哀九。 她就那樣靜靜地躺著,像睡著了一般搅幅。 火紅的嫁衣襯著肌膚如雪阅束。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天茄唐,我揣著相機(jī)與錄音息裸,去河邊找鬼。 笑死沪编,一個胖子當(dāng)著我的面吹牛呼盆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚁廓,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼访圃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了相嵌?” 一聲冷哼從身側(cè)響起腿时,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饭宾,沒想到半個月后批糟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡看铆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年徽鼎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片性湿。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡纬傲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肤频,到底是詐尸還是另有隱情叹括,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布宵荒,位于F島的核電站汁雷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏报咳。R本人自食惡果不足惜侠讯,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望暑刃。 院中可真熱鬧厢漩,春花似錦、人聲如沸岩臣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澎灸。三九已至先鱼,卻和暖如春君纫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背土全。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工捎琐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裹匙。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓瑞凑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親幻件。 傳聞我的和親對象是個殘疾皇子拨黔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容