动态sql片段使用方法:创建sql标签在标签体中输入动态代码段,其中id最好为能表示这个代码段信息的,然后再需要引用的地方用include标签引用,include中的id为被引用的sql代码段id。下面是动态语法的使用。
//where使用接口中定义的方法
List<Student> SelAll2(Student student);
where和if联合使用,当if中test条件成立时,才会将标签体的内容拼接在SQL语句中
<!-- where-->
<select id="SelAll2" resultType="org.example.Entity.Student">
select id,name,email,age from student
<where>
<if test="email !=null and email !=''">
email=#{email}
</if>
<if test="age!=0">
and age>#{age}
</if>
</where>
</select>
//foreach用法1
List<Student> SelAll3(List<Integer> id);
//foreach用法2
List<Student> SelAll4(List<Student> students);
也可以不用foreach中的open和close,只要能拼接成一个正确的SQL语句即可
<!-- where collection为方法的类型 数组为array list集合则为list
item 自定义的,表示数组和集合成员的变量
open 循环开始时的字符
close 循环结束时的字符
separator 集合成员中的分隔符
第一种用法
-->
<select id="SelAll3" resultType="org.example.Entity.Student">
select id,name,email,age from student where id in
<foreach collection="list" item="list" open="(" close=")" separator=",">
#{list}
</foreach>
</select>
<!-- 第二种用法-->
<select id="SelAll4" resultType="org.example.Entity.Student">
select id,name,email,age from student where id in
<foreach collection="list" item="list" open="(" close=")" separator=",">
#{list.id}
<if test="list.name !=''">
and name!=#{list.name}
</if>
</foreach>
</select>