下面給大家總結(jié)了以下幾種多參數(shù)傳遞的方法霹肝。
方法1:順序傳參法
public User selectUser(String name, int deptId);
<select id="selectUser" resultMap="UserResultMap">
select * from user
where user_name = #{0} and dept_id = #{1}
</select>
#{}
里面的數(shù)字代表你傳入?yún)?shù)的順序市袖。
這種方法不建議使用,sql層表達(dá)不直觀薇缅,且一旦順序調(diào)整容易出錯(cuò)浩嫌。
方法2:@Param注解傳參法
public User selectUser(@Param("userName") String name, int @Param("deptId") deptId);
<select id="selectUser" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
#{}
里面的名稱對(duì)應(yīng)的是注解@Param括號(hào)里面修飾的名稱涝焙。
這種方法在參數(shù)不多的情況還是比較直觀的俺泣,推薦使用祥款。
方法3:Map傳參法
public User selectUser(Map<String, Object> params);
<select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
#{}
里面的名稱對(duì)應(yīng)的是Map里面的key名稱罗侯。
這種方法適合傳遞多個(gè)參數(shù)器腋,且參數(shù)易變能靈活傳遞的情況。
PS:
MyBatis傳遞map參數(shù)時(shí)钩杰,如果傳遞參數(shù)中沒(méi)有對(duì)應(yīng)的key值纫塌,在執(zhí)行sql語(yǔ)句時(shí)默認(rèn)取的是null
例如:map中沒(méi)有put “name”這個(gè)key,在sql中使用#{name}時(shí)讲弄,默認(rèn)賦值null
方法4:Java Bean傳參法
public User selectUser(Map<String, Object> params);
<select id="selectUser" parameterType="com.test.User" resultMap="UserResultMap">
select * from user
where user_name = #{userName} and dept_id = #{deptId}
</select>
#{}
里面的名稱對(duì)應(yīng)的是User類里面的成員屬性措左。
這種方法很直觀,但需要建一個(gè)實(shí)體類避除,擴(kuò)展不容易怎披,需要加屬性,看情況使用瓶摆。
??
作者:架構(gòu)之路
鏈接:http://www.reibang.com/p/0ef856fcf938
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有凉逛。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處赏壹。