<select id="getEmpByCondition" resultType="Emp">
select * from t_emp where 1=1<if test="empName != null and empName != ''">
and emp_name = #{empName}</if><if test="age != null and age != ''">
and age = #{age}</if><if test="sex != null and sex != ''">
and sex = #{sex}</if><if test="email != null and email != ''">
and email = #{email}</if></select>
where标签
标签内无内容,where也不会添加
有内容自动生成where关键字并且将内容前多余的and 或 or去掉,内容后的and 或 or 会报错
<select id="getEmpByCondition" resultType="Emp">
select * from t_emp
<where><if test="empName != null and empName != ''">
emp_name = #{empName}</if><if test="age != null and age != ''">
and age = #{age}</if><if test="sex != null and sex != ''">
and sex = #{sex}</if><if test="email != null and email != ''">
and email = #{email}</if></where></select>
若trim中的标签都不满足条件,则trim标签没有任何效果,也就是只剩下select * from t_emp
<select id="getEmpByCondition" resultType="Emp">
select * from t_emp
<trim prefix="where" suffix="" prefixOverrides="" suffixOverrides="and|or"><if test="empName != null and empName != ''">
emp_name = #{empName} and
</if><if test="age != null and age != ''">
age = #{age} or
</if><if test="sex != null and sex != ''">
sex = #{sex} and
</if><if test="email != null and email != ''">
email = #{email}</if></trim></select>
choose when otherwise标签 相当于…else …if…else
when至少要有一个,otherwise至多只有一个
如果有满足的条件就加上相应的条件,都不满足就加上otherwise里面的条件
<select id="getEmpByChoose" resultType="Emp">
select * from t_emp
<where><choose><when test="empName != null and empName != ''">
emp_name = #{empName}</when><when test="age != null and age != ''">
age = #{age}</when><when test="sex != null and sex != ''">
sex = #{sex}</when><when test="email != null and email != ''">
email = #{email}</when><otherwise>
did =1</otherwise></choose></where></select>
foreach标签
主要是实现批量操作的标签
属性
collection 循环体要通过@Param来获取参数
item 循环的每一项子项的名称
separator 分隔符
close 所有内容的后缀
open 所有内容的前缀
批量删除(数组)
第一种
<delete id="deletMoreByArray1">
delete from t_emp where eid in
<foreach collection="eids" item="eid" separator="," close=")"open="(">
#{eid}</foreach></delete>
第二种
<delete id="deletMoreByArray">
delete from t_emp where
<foreach collection="eids" item="eid" separator="or">
eid = #{eid}</foreach></delete>