AND ipt_num=#{iptNum}
AND bed_num = #{bedNum}
AND status=1
MyBatis 提供了 choose 元素,按顺序判断 when 中的条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的 sql。类似于 Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为default。
举个栗子:对于choose标签的例子中的查询,如果去掉where后的1=1此时的SQL语句会变成什么样子,有三种可能的SQL,如下:
select * from patient_info where AND ipt_num=#{iptNum};
select * from patient_info where AND bed_num = #{bedNum};
select * from patient_info where AND status=1;
发生了什么,以上三条SQL语句对吗?很显然是不对的,显然where后面多了个AND。如何解决呢?此时就要用到where这个标签了。
where 元素只会在子元素返回任何内容的情况下才插入 WHERE 子句。而且,若子句的开头为 AND 或 OR,where 元素也会将它们去除。
此时的查询改造如下:
<select id=“selectPats”
resultType=“com.xxx.domain.Patien