choose标签是按顺序判断其内部when标签中的test条件是否成立,如果有一个成立,则 choose 结束。

当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。

类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

例如下面例子,同样把所有可以限制的条件都写上,方面使用。

choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字避免错误。

<!--  choose(判断参数) - 按顺序将实体类 User 第一个不为空的属性作为:where条件 -->
<select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">
SELECT *
FROM User u
<where>
<choose>
<when test="username !=null ">
u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')
</when >
<when test="sex != null and sex != '' ">
AND u.sex = #{sex, jdbcType=INTEGER}
</when >
<when test="birthday != null ">
AND u.birthday = #{birthday, jdbcType=DATE}
</when >
<otherwise>
</otherwise>
</choose>
</where>
</select>

最新文章

  1. 使用python拼接多张图片.二三事
  2. FTP弱口令猜解【python脚本】
  3. 【读书笔记】.Net并行编程高级教程--Parallel
  4. JS中call、apply、bind使用指南,带部分原理。
  5. yii 常用路径
  6. C++指针内存
  7. group by的使用
  8. [转] Linux strace 简介
  9. D. Bear and Two Paths(贪心构造)
  10. 微信小程序 发现之旅(一)—— 项目搭建与页面跳转
  11. throws与throw
  12. vins-mono:雅可比矩阵的推导
  13. thinkphp5 图片下载保存
  14. AES和RSA的加密过程通过面向对象的方式写成一个类,封装起来
  15. C#反射、方法调用、自动调用方法、根据按钮名称调用方法、C#按钮权限管理
  16. 软概(lesson 2):课堂测试
  17. AOP 环绕通知 (Schema-base方式) 和 AspectJ方式在通知中获取切点的参数
  18. javascript中json对象长度
  19. 软件功能说明书beta修订
  20. Java从零开始学二十八(Math类和Random类)

热门文章

  1. Android事件分发机制浅谈(三)--源码分析(View篇)
  2. 超简单,spring boot 添加mybatis
  3. 小tips合集
  4. 【转】深入浅出JavaScript之this
  5. GitHub + VSTS 开源代码双向同步
  6. mac 抓包工具charles v3.9.3 安装破解步骤
  7. 实时观察Apache访问情况的工具Apachetop
  8. JS 字符串
  9. [iOS]ReactiveCocoa安装方法
  10. [LeetCode] Remove Duplicates from Sorted List II 移除有序链表中的重复项之二