本文已参与「新人创作礼」活动,一起开启掘金创作之路
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>
单独传对象,对象属性前不需要加"参数名.",在分页时却需要。