mybatis dao用@Param传参, 如果有多个参数,在mapper里面所有出现的参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis dao用@Param传参, 如果有多个参数,在mapper里面所有出现的参数相关的知识,希望对你有一定的参考价值。
包括<if test="abc!=null">这种,abc这种一定要带在dao里的@Param里面吗?
参考技术A 目前能想要的有3种方式,具体如下: 1、用map集合的方式: Map paramMap = new HashMap();paramMap.put("username", "zhangsan");paramMap.put("password", "123");dao.queryUserInfo(paramMap); // 调用接口的方法,查询用户信息本回答被提问者和网友采纳MyBatis dao层 方法传参
MyBatis dao层 方法传参有三种方法。
1. 以下标的方法获取参数。
<update id="insertSuccessKilled">
INSERT ignore INTO success_killed(seckill_id,user_phone,state)VALUES (#{0},#{1},1)
</update>
2. 以map作为dao方法中的参数,通过使用key和类型来获取参数。
<
select
id=
" selectUser"
resultMap=
"BaseResultMap"
>
select
*
from
user_user_t
where
user_name = #{userName,jdbcType=
VARCHAR
}
and
user_area=#{userArea,jdbcType=
VARCHAR
}
</
select
>
Service层调用
Private
User
xxxSelectUser(){
Map paramMap=new hashMap();
paramMap.put(“userName”,”对应具体的参数值”);
paramMap.put(“userArea”,”对应具体的参数值”);
User
user
=xxx. selectUser(paramMap);}
3. 在dao方法中的参数里通过增加@Param("param"),在mapper中引用param来获取参数。
<update id="reduceNumber">
<!-- 具体sql -->
update
seckill
set
number = number-1
where seckill_id = #{seckillId}
and start_time <![CDATA[ <= ]]> #{killTime}
and end_time >= #{killTime}
and number > 0;
</update>
以上是关于mybatis dao用@Param传参, 如果有多个参数,在mapper里面所有出现的参数的主要内容,如果未能解决你的问题,请参考以下文章