【Mybatis】Mybatis传递多个参数
在使用Mybatis过程中,经常会碰到传入多个参数的情形。
1. 多参数
基本的多参数传递方式:
xxxMapper.class
public List<XXXBean> getXXXBeanList(String param1, String parm2);
xxxMapper.xml
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{0} and name = #{1}
</select>
注意点:
- 多参数不能使用parameterType
- 使用**#{index}**的方式,index从0开始,#{0}表示第一个参数,#{1}表示第二个参数,#{2}表示第三个参数,以此类推…
1.1 Map封装多参数
第一种“Map” ==》map
xxxMapper.class
public AdminRole isSameNameByRidAndName(@Param("map") Map<String,Object> map);
xxxMapper.xml
<select id="isSameNameByRidAndName" parameterType="map" resultType="AdminRole">
select id
from admin_role
where name = #{map.name} and id <![CDATA[<>]]> #{map.rid}
</select>
注意需要添加注解@Param(“map”),并且此时parameterType为map
第二种 “map” ==》 hashmap
public List<XXXBean> getXXXBeanList(HashMap map);
<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">
select 字段... from XXX where id=#{xxId} code = #{xxCode}
</select>
其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。
此时parameterType为hashmap,hashmap为Mybatis系统配置好的,直接进行使用即可
1.2 参数为List
public List<AdminRole> getAdminRoleListByRids(List<Integer> rids);
<select id="getAdminRoleListByRids" resultType="AdminRole">
select id,name,name_zh,enabled
from admin_role
where id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
-
foreach 为Mybatis的动态sql中的其中一个用法
-
以上的sql效果为:
select id,name,name_zh,enabled from admin_role where id in (1,2,3,4) -
对于参数为List的参数,foreach的collection属性必须为list
1.3 注解处理多参数
通过使用注解@Param(“xxx”)进行指定参数
public int resetPassword(@Param("userName") String userName,@Param("password") String password,@Param("salt")String salt);
<update id="resetPassword" parameterType="string">
update User
set password = #{password},salt = #{salt}
where username = #{userName}
</update>
- 在xml配置文件中,直接对应于@Param(“变量名”) 变量名进行使用即可
Mybatis多参数传递方式详解
本文详细介绍了Mybatis在处理多个参数时的常见方法,包括使用Map封装参数,参数为List时的foreach处理,以及注解方式指定多参数。在Map封装中,可以使用普通Map或HashMap,而注解处理时需配合@Param使用。
2626

被折叠的 条评论
为什么被折叠?



