关于mybatis传参问题

3 篇文章 0 订阅

我们在使用mybatis过程中,一般是一个mapper.java对应一个mapper.xml,在java文件写入方法名和xml文件的id进行对应,在这里我们经常会用到参数传入到xml中的问题

下面来聊一下mybatis传参问题

1.单个参数传递,不使用封装

java代码:

User findUserbyUsername(String username);
xml代码:

<select id="findUserbyUsername" parameterType="java.lang.String" 
    resultMap="UserMap">
    	select * from userinformation  where username = #{username}
    </select>
2.多个参数传递,不使用封装

java代码:

User findUserbyUsername(String username, String password);
xml代码:

多个参数传递,不需要使用parameterType,且将参数名改成索引,#{index},索引从0开始。

<select id="findUserbyUsername" resultMap="UserMap">
    	select * from userinformation  where username = #{0}
    	and password=#{1}
    </select>
3.使用封装DTO

java代码:

User findUserbyUsername(UserDto dto);
xml代码:

<select id="findUserbyUsername" parameterType="com.test.domain.UserDto" 
    resultMap="UserMap">
    	select * from userinformation  where username = #{username}
    	and password=#{password}
    </select>
4.使用map封装

java代码:

User findUserbyUsername(Map map);
xml:#{}里面的值为map的key
<select id="findUserbyUsername" parameterType="java.util.HashMap" 
    resultMap="UserMap">
    	select * from userinformation  where username = #{username}
    	and password=#{password}
    </select>
5.list封装
java代码:

List<User> getUserListById(List list);
xml代码:

<select id="getUserListById" resultMap="UserMap">
  select * from userinformation where id in
  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
    #{item}  
  </foreach>  
</select>  
效果为:

select * from XXX where id in ('1','2','3')


6.使用注解

java代码:

User findUserbyUsername(@Param("username")String username,@Param("password")String password);
xml代码:

<select id="findUserbyUsername" resultMap="UserMap">
    	select * from userinformation  where username = #{username}
    	and password=#{password}
    </select>






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值