MyBatis XML 常用写法:传入数组 / List

场景

假设查询 person 表,参数类型为 XXXVo,其中包含一个 List 对象保存状态列表,此时可以参考下面的写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
<select id="queryXXX" parameterType="XXXVo"
resultMap="XXXResult">
select *
from person
WHERE 1=1
<if test="statusFilter != null and statusFilter.size() > 0">
and status in
<foreach collection="statusFilter" item="statusId" index="i" open="(" close=")" separator=",">
#{statusId}
</foreach>
</if>
ORDER BY DEPTID
</select>

通过Map对象传递参数给xml

参数同样可以通过Map对象传递到xml这个层面,此时这样写即可:
java代码:

1
map.put(statusFilter, 列表实例对象);

xml代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
<select id="queryXXX" parameterType="java.util.HashMap"
resultMap="XXXResult">
select *
from person
WHERE 1=1
<if test="statusFilter != null and statusFilter.size() > 0">
and status in
<foreach collection="statusFilter" item="statusId" index="i" open="(" close=")" separator=",">
#{statusId}
</foreach>
</if>
ORDER BY DEPTID
</select>

参考文章