mybatis-plus:Mapper接口传参,在Xml文件中映射接收

1,179 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

mybatis-plus传参主要是mapper接口的参数,与xml里面写sql接收参数的对应

1.传递基本类型

多个基本类型,xml里面可以不写接收参数

List<User> selectUser(Long userId, String userName);

xml代码可以如下编写

<select id="selectUser" resultMap="userResultMap">
  SELECT
     user.*
  FROM
  	user u
  WHERE 1=1
  <if test="userId!= null and userId!= ''">
      AND u.user_id = #{userId}
  </if>
  <if test="userName!= null and userName!= ''">
      AND u.user_name = #{userName}
  </if>
</select>

或者

<select id="selectUser" resultMap="userResultMap">
  SELECT
     user.*
  FROM
  	user u
  WHERE 1=1
  <if test="param1!= null and param1!= ''">
      AND u.user_id = #{param1}
  </if>
  <if test="param2!= null and param2!= ''">
      AND u.user_name = #{param2}
  </if>
</select>

2.传递引用类型

2.1传递List

List<User> selectUserByStatus(List<Integer> statusList);

xml代码可以如下编写

SELECT
     user.*
  FROM
  	user u
  WHERE 1=1
   <if test="statusList != null">
       AND u.status IN
       <foreach item="item" index="index" collection="statusList" open="(" separator="," close=")">
           #{item}
       </foreach>
   </if>
</select>

2.2传递map

List<User> selectUserByMap(Map<String,Object> userMap);

调用

Map<String,Object> userMap = new HashMap<>;
userMap.put("userId",12345);
userMap.put("userName","黎明");
List<User> userList = userMapper.selectUserByMap(userMap);

xml代码可以如下编写

<select id="selectUser" resultMap="userResultMap">
  SELECT
     user.*
  FROM
  	user u
  WHERE 1=1
  <if test="userId!= null and userId!= ''">
      AND u.user_id = #{userId}
  </if>
  <if test="userName!= null and userName!= ''">
      AND u.user_name = #{userName}
  </if>
</select>

或者

<select id="selectUser" resultMap="userResultMap">
  SELECT
     user.*
  FROM
  	user u
  WHERE 1=1
  <if test="param1!= null and param1!= ''">
      AND u.user_id = #{param1}
  </if>
  <if test="param2!= null and param2!= ''">
      AND u.user_name = #{param2}
  </if>
</select>

2.3传递对象

List<User> selectUserList(User user);

调用

User  user = new User();
user.setUserId(12345);
user.setUserNamed("黎明");
List<User> userList = userMapper.selectUserList(user);

xml代码可以如下编写

<select id="selectUser" resultMap="userResultMap" parameterType="com.ju.User">
  SELECT
     user.*
  FROM
  	user u
  WHERE 1=1
  <if test="userId!= null and userId!= ''">
      AND u.user_id = #{userId}
  </if>
  <if test="userName!= null and userName!= ''">
      AND u.user_name = #{userName}
  </if>
</select>

2.4传递对象带分页

List<User> selectOrderFormPage(IPage page, User user);

调用

User user = new User();
user.setUserId(12345);
user.setUserNamed("黎明");
List<User> userList = userMapper.selectUserPage(Condition.getPage(query), user);

xml代码可以如下编写

<select id="selectUser" resultMap="userResultMap" parameterType="com.ju.User">
  SELECT
     user.*
  FROM
  	user u
  WHERE 1=1
  <if test="user.userId!= null and user.userId!= ''">
      AND u.user_id = #{user.userId}
  </if>
  <if test="user.userName!= null and user.userName!= ''">
      AND u.user_name = #{user.userName}
  </if>
</select>

单独传对象,对象属性前不需要加"参数名.",在分页时却需要。