<!--if和where标签--><!--有些信息有,有些没有,查询信息即where后参数个数和类型是变化的 使用where标签实现--><selectid="selectByCondition"parameterType="Student"resultMap="studentMap">
select
<includerefid="studentColumn"/>
from
student
<!-- where 去掉第一个and --><where><iftest="name!=null and name!=''">
and student_name like concat('%', #{name}, '%')
</if><iftest="age!=null">
and age=#{age}
</if><iftest="gender!=null and gender!=''">
and gender=#{gender}
</if></where></select>
2、set标签
<selectid="updateCondition"parameterType="Student">
update
student
<set><!-- set标签自动实现去掉最后的逗号 --><iftest="name!=null and name!=''"><!-- if判断串的参数,传递参数是以Student的的形式传 -->
student_name=#{name}, <!-- 查询语句,名称要与数据库内相同 --></if><iftest="age!=null">
age=#{age},
</if><iftest="gender!=null and gender!=''">
gender=#{gender}
</if></set>
where id=#{id}
</select>
3、foreach标签
处理数组或者集合,MyBatis使用foreach标签解析
deletefrom student where id in(1,2,3,4);
<!--int[] idArray = {1,4,3,5}--><deleteid="deleteAllByArray">
delete from student
where id in
<foreachcollection="array"open="("close=")"item="id"separator=",">
#{id}
</foreach></delete>
4、choose、when、otherwise标签
搜索时只能按照其中一个来搜索,存在优先级
相当于if-else语句
<selectid="selectByAllCondition"parameterType="Student"resultMap="studentMap">
select
<includerefid="studentColumn"/>
from
student
<!-- when:如果用户填写了名字,就按照名字搜索,即使填写了别的条件也不去拼接 -->
where
<choose><whentest="name!=null and name!=''">
student_name like concat('%',#{name},'%')
</when><whentest="age!=null">
age=#{age}
</when><whentest="gender!-null and gender!=''">
gender=#{gender}
</when><otherwise></otherwise></choose></select>