MyBaties——动态SQL+foreach
程序员文章站
2022-06-17 19:55:56
...
<foreach>标签迭代查询
<foreach> 迭代的类型:数组、对象数组、集合、属性(List<Integer> ids)
SQL拼接过程:
select * from student
open:and id in(
select * from student and id in(
close:)
select * from student and id in(stuNo)
separator:指明用逗号分隔
简单类型数组:
编写代码时,传递的是什么参数名(stuNos),在mapper.xml中 必须用array代替该数组。
<select id="queryByNOsgrades" parameterType="int[]">
select * from student
<where>
<if test="array!=null and array.size>0">
<foreach collection="array" open=" and id in (" close=")" item="stuNo" separator=",">
#{stuNo}
</foreach>
</if>
</where>
</select>
集合:List
编写代码时,传递的是什么参数名(stuNos),在mapper.xml中 必须用list代替该数组。
<!--foreach -->
<select id="queryByNOsgrades" parameterType="list">
select * from student
<where>
<if test="list!=null and list.size>0">
<foreach collection="list" open=" and id in (" close=")" item="stuNo" separator=",">
#{stuNo}
</foreach>
</if>
</where>
</select>
对象数组:
编写代码时,传递的是什么参数名(stuNos),在mapper.xml中 必须用list代替该数组。
<!--foreach -->
<select id="queryByNOsgrades" parameterType="object[]">
select * from student
<where>
<if test="array!=null and array.size>0">
<foreach collection="array" open=" and id in (" close=")" item="stuNo" separator=",">
#{student.stuNo}
</foreach>
</if>
</where>
</select>