许久没写过博客,记录一下。
业务中,需要根据输入的查询条件,查找用户信息并做分页:
首先在dao层传入一个param:
IPage<SysUserListResp> selectListPage(Page<SysUserListResp> page,@Param("params") Map<String, Object> params);
其中,param的类型为Map<String, Object>,在本次业务中,既包括了String也有List(在service层将查询条件转换成了用户表id集合,方便查询),那么在mybatis中怎么处理这个list呢?
直接上代码:
<select id="selectListPage" resultType="model.user.resp.SysUserListResp" parameterType="java.util.HashMap" >
select a.user_id as userId,
a.username as username,
a.status as status,
a.create_time as createTime,
a.emp_code as employeNum,
a.dep_name as depName,
c.role_type as roleType,
c.role_id as roleId,
c.role_name as roleName,
d.id as depId,
d.dep_name as depName
from sys_user as a
left join ...
left join ...
left join ...
left join ...
where a.emp_work_status = 3 and e.parent_dep_id = d.dep_code
<if test="params.userName != null and params.userName !=''">
and a.username like concat('%',#{params.userName},'%')
</if>
<if test="params.roleId != null and params.roleId !=''">
and c.role_id = #{params.roleId}
</if>
<if test="params.userIds != null">
and a.user_id in
<foreach collection="params.userIds" separator="," open="(" close=")" item="userId">
#{userId}
</foreach>
</if>
order by a.create_time desc
</select>
结合sql的in语句,将list映射成相应的sql语句:
user_id in
<foreach collection="params.userIds" separator="," open="(" close=")" item="userId">
#{userId}
</foreach>
以上。
版权声明:本文为weixin_43231398原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。