<selectid="find"resultType="Emp">
select * from emp
<where><iftest="ename!=null and ename!=''">
ename like '%${ename}%'
if><iftest="job!=null and job!=''">
and job like '%${job}%'
if>where>select>
<selectid="choose"resultType="Emp">
select * from emp
<choose><whentest="ename!=null">
where ename like '%${ename}%'
when><whentest="job!=null">
where job like '%${job}%'
when><otherwise>
order by sal desc
otherwise>choose>select>
a choose标签和when标签或者otherwise搭配使用
b when标签test属性里面写的规则和if一致,传入是是一个变量,就写变量名,若传入的是一个对象,则写对象里面的属性即可
如传入emp对象 emp对象里面的ename、mgr等都能在test属性里面使用
c choose标签只会执行里面的一个条件
a set标签里面的if标签只要有一个符合条件,则会加上set标签,没有一个符合条件的时候,会一个在修改提前进行判断的,不会让其执行这条语句的
b set标签一般于if搭配着使用
c 多个条件时,逗号写在第二个if标签里面的前头
1
2
3
5 范围查找(in标签)
5.1 集合形式
5.1.1 接口方法
List<Emp>for1(List<Integer> deptnos);
1
5.1.2 xml文件中select标签
<selectid="for1"resultType="Emp">
select * from emp WHERE deptno in
<foreachcollection="list"item="id"open="("close=")"separator=",">
#{id}
foreach>select>
<selectid="for2"resultType="Emp">
select * from emp WHERE job in
<foreachcollection="array"item="j"open="("close=")"separator=",">
#{j}
foreach>select>