一、参数list时,先判断是否为空,否则会报错。
1.查询
<if test="ids != null and ids.size() > 0">
and c.grade_id in
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="ids != null and list.size() > 0">
and
<foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
c.grade_id like '${item}' + '%'
</foreach>
</if>
2.新增
<insert id="insertList" parameterType="list">
insert into test(
id,name
) VALUES
<foreach collection="list" item="item" separator="," >
(#{item.id},#{item.name}
</foreach>
</insert>
二、mybatis ${}与#{}的区别
简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from table where id=?
然而${} 则是不能防止SQL注入打印出来的语句 select * from table where id=2 实实在在的参数。
最简单的区别就是${}解析穿过来的参数值不带单引号,#{}解析传过来参数带单引号。
最后总结一下必须使用$引用参数的情况,那就是参数的int型的时候,必须使用$引用。
三 、 数组
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>