关于mybatis传参问题

来源:互联网 发布:new balance跑鞋 知乎 编辑:程序博客网 时间:2024/06/05 03:52

我们在使用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>






















原创粉丝点击