有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件。MyBatis 提供了 choose 元素。if标签是与(and)的关系,而 choose 是或(or)的关系。

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>

choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中 的 choose 很类似。

<select id="dynamicChooseTest" parameterType="Blog" resultType="Blog">select * from t_blog where 1 = 1 <choose><when test="title != null">and title = #{title}</when><when test="content != null">and content = #{content}</when><otherwise>and owner = "owner1"</otherwise></choose></select>

when元素表示当 when 中的条件满足的时候就输出其中的内容,跟 JAVA 中的 switch 效果差不多的是按照条件的顺序,当 when 中有条件满足的时候,就会跳出 choose,即所有的 when 和 otherwise 条件中,只有一个会输出,当所有的我很条件都不满足的时候就输出 otherwise 中的内容。所以上述语句的意思非常简单, 当 title!=null 的时候就输出 and titlte = #{title},不再往下判断条件,当title为空且 content!=null 的时候就输出 and content = #{content},当所有条件都不满足的时候就输出 otherwise 中的内容。

choose标签使用相关推荐

  1. Mybatis的choose标签

    1.choose标签介绍 choose标签作用条件判断来拼接指定的条件,它和if不太相同,choose似类于java中的switch语句用法,直要有条件成立,其它判断将得不到执行,如果所有条件都不成立 ...

  2. mybatis choose标签的用法

    先上代码: <choose> <when test="BEGINTIME != null and BEGINTIME != '' and ENDTIME != null a ...

  3. MySQL中choose标签的用法

    MySQL中标签的用法 先给大家来个SQL语句: choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中 的 choose 很类似. SELECT ...

  4. 43、JSTL的choose标签

    choose:相当于java代码的switch语句 1. 使用choose标签声明                     相当于switch声明 2. 使用when标签做判断             ...

  5. ibatis中choose标签使用

    choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束.当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的s ...

  6. mybatis choose标签的使用

    有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个.而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件.MyBatis 提供了 choose 元素.if标签是 ...

  7. mybaits十六:使用choose标签实现分支选择

    <!-- 分支选择<choose><when></when><otherwise></otherwise></choose> ...

  8. jstl c:choose、c:when和c:otherwise标签

    在用spring mvc中,页面前端老用jstl,记录一下. <c:choose>.<c:when>和<c:otherwise>在一起连用,可以实现Java语言中的 ...

  9. Mybatis choose (when, otherwise)标签

    choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束.当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的s ...

  10. jstl c:choose、c:when和c:otherwise标签的简单使用介绍

    <c:choose>.<c:when>和<c:otherwise>在一起连用,可以实现Java语言中的if-else语句的功能.例如以下代码根据username请求 ...

最新文章

  1. maven环境下,控制台中文乱码
  2. char、varchar、nchar、nvarchar的区别
  3. leetcode - 22. 括号生成
  4. 容器时代的DevOps部署-普元DevOps
  5. 吞食天地2重制版巫妖王panny版存档_11年前的冷饭—Nintendo 任天堂 Switch《宵星传奇 重制版》评测...
  6. 说说视频编码格式、视频码率、视频帧率、分辨率的概念
  7. 关于VGA接口连接1080p显示器模糊多半是线的问题
  8. ∀x(P(x) → Q(x))和∀xP(x) → ∀xQ(x) 的区别
  9. 计算机主板巨头,主板主要厂商
  10. 2022 面试必刷 461 道大厂架构面试真题汇总 + 面经 + 简历模板
  11. 三星华为等推折叠屏手机 这家日本小厂意外发财
  12. js 截取某个字符前面或者后面的字符串
  13. python画旺仔代码_python基础1
  14. 深入浅出HTTPS工作原理 1
  15. Pytorch使用笔记
  16. 在Ubuntu18.04上安装USTC-TK2016
  17. 关于我的计算机的英语作文,关于电脑的英文作文精选5篇
  18. ADS-B地面接收机 AERO-1090-2
  19. openframeworks播放mp4,avi的视频格式
  20. bullmind在线uml软件,在线流程图软件

热门文章

  1. 110 AddressBook
  2. SPI 读取不同长度 寄存器_几种常用的总线设计:UART/SPI/I2C
  3. 富有哲理的10则故事(必读经典)
  4. 《学习之道》第二章专注思维和发散思维
  5. 天牛须matlab,BAS天牛须搜索优化算法.pdf
  6. 来自CodeSmith的震撼
  7. lenovo服务器换系统重装系统_联想服务器重装系统教程
  8. nls_lang环境变量linux设置,设置NLS_LANG环境变量
  9. table总结insertRow、deleteRow 学习
  10. Android无网络传输文件之WifiP2P