Mybatis Mapper 中如何传递多个参数

一、DAO 层的函数

public User selectUser(String name,String account);

对应的 xml:

<select id="selectUser" resultMap="ResultMap">
select * from user 
where name = #{0} 
and account = #{1}
</select>

#{0}代表接收的是 dao 层中的第一个参数,#{1}代表 dao 层中第二参数,更多参数一直往后加即可。

二、使用 @param 注解:

user selectuser(@param(“name”) string name,
		@param(“account”) string account);
 

然后,就可以在 xml 像下面这样使用(推荐封装为一个 map,作为单个参数传递给
mapper):

<select id=”selectuser” resulttype=”user”>
	select id, name, account from user
	<where>
		<if test="name != null and name != '' ">and name = #{name}</if>
		<if test="account != null and account != '' ">and account = #{account}</if>
	</where>
</select>

三、多个参数封装成 list、array、map 或 其他对象

由于我们的参数超过了两个,而方法中只有一个 Object 参数收集,因此我们可以使用 Map 集合来装载我们的参数


Map < String, Object > map = new HashMap();
map.put("name", name);
map.put("account", account);

//mapper方法
List<user> getUserList(@Param("params")Map<String,Object> params);

对应xml

<select id=”getUserList” resulttype=”user”>
	select id, name, account from user
	<where>
		<if test="params.name != null and params.name != '' ">and name = #{params.name}</if>
		<if test="params.account != null and params.account != '' ">and account = #{params.account}</if>
	</where>
</select>

也可以 Map对象但不加@Param注释,则对应xml

<select id=”getUserList” resulttype=”user”>
	select id, name, account from user
	<where>
		<if test="name != null and name != '' ">and name = #{name}</if>
		<if test="account != null and account != '' ">and account = #{account}</if>
	</where>
</select>

list作为参数:

<!--List:forech中的collection属性类型是List,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
<select id="getList" resultType="user">
   select *
   from user u 
   where u.id in
   <foreach collection="list" item="userId" index="index" open="(" close=")" separator=",">
       #{userId}
   </foreach>
</select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值