choose(when otherwise)相当于Java中的switch语句,通常when和otherwise一起使用。
where:简化SQL语句中的where条件。
set 解决SQL语句中跟新语句
我们课已通过几个例子来看一下这几个元素的运用场景:
if:
select * from emp where 1=1
and deptno=#{deptNO}
and deptno=#{deptName}
注:中 的deptNo是指实体类中的属性或字段;
choose:
select * from emp where 1=1
and deptno=#{deptNo}
and deptname=#{deptName}
and personnum>#{personNum}
注:上面也说了,choose相当于Java中的switch语句;当第一个when满足时;就只执行第一个when中的条件。当when中的条件都不满足时;就会执行默认的的;也就是otherwise中的语句。
where:
select * from emp
and deptno=#{deptNO}
and deptno=#{deptName}
注: where下面第一个if语句中以and开头,也可以省略第一个and ,如果第一个if语句中有and;mybatis会将第一个and忽略。
set:
update emp
empname=#{empName},
job=#{job}
where empno=#{empNo}
in:
select * from t_blog where id in
#{item}
测试代码:
@Test
public void dynamicForeachTest() {
SqlSession session = Util.getSqlSessionFactory().openSession();
BlogMapper blogMapper = session.getMapper(BlogMapper.class);
List ids = new ArrayList();
ids.add(1);
ids.add(3);
ids.add(6);
List blogs = blogMapper.dynamicForeachTest(ids);
for (Blog blog : blogs)
System.out.println(blog);
session.close();
}
注: 在mybatis中的SQL语句结尾不能加“;”,这样会导致mybatis无法识别字符;导致SQL语句的语法错误;出现 java.sql.SQLSyntaxErrorException:ORA-00911: 无效字符的错误。的异常。