choose标签使用
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用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标签使用相关推荐
- Mybatis的choose标签
1.choose标签介绍 choose标签作用条件判断来拼接指定的条件,它和if不太相同,choose似类于java中的switch语句用法,直要有条件成立,其它判断将得不到执行,如果所有条件都不成立 ...
- mybatis choose标签的用法
先上代码: <choose> <when test="BEGINTIME != null and BEGINTIME != '' and ENDTIME != null a ...
- MySQL中choose标签的用法
MySQL中标签的用法 先给大家来个SQL语句: choose (when,otherwize) ,相当于java 语言中的 switch ,与 jstl 中 的 choose 很类似. SELECT ...
- 43、JSTL的choose标签
choose:相当于java代码的switch语句 1. 使用choose标签声明 相当于switch声明 2. 使用when标签做判断 ...
- ibatis中choose标签使用
choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束.当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的s ...
- mybatis choose标签的使用
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个.而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件.MyBatis 提供了 choose 元素.if标签是 ...
- mybaits十六:使用choose标签实现分支选择
<!-- 分支选择<choose><when></when><otherwise></otherwise></choose> ...
- jstl c:choose、c:when和c:otherwise标签
在用spring mvc中,页面前端老用jstl,记录一下. <c:choose>.<c:when>和<c:otherwise>在一起连用,可以实现Java语言中的 ...
- Mybatis choose (when, otherwise)标签
choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束.当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的s ...
- jstl c:choose、c:when和c:otherwise标签的简单使用介绍
<c:choose>.<c:when>和<c:otherwise>在一起连用,可以实现Java语言中的if-else语句的功能.例如以下代码根据username请求 ...
最新文章
- maven环境下,控制台中文乱码
- char、varchar、nchar、nvarchar的区别
- leetcode - 22. 括号生成
- 容器时代的DevOps部署-普元DevOps
- 吞食天地2重制版巫妖王panny版存档_11年前的冷饭—Nintendo 任天堂 Switch《宵星传奇 重制版》评测...
- 说说视频编码格式、视频码率、视频帧率、分辨率的概念
- 关于VGA接口连接1080p显示器模糊多半是线的问题
- ∀x(P(x) → Q(x))和∀xP(x) → ∀xQ(x) 的区别
- 计算机主板巨头,主板主要厂商
- 2022 面试必刷 461 道大厂架构面试真题汇总 + 面经 + 简历模板
- 三星华为等推折叠屏手机 这家日本小厂意外发财
- js 截取某个字符前面或者后面的字符串
- python画旺仔代码_python基础1
- 深入浅出HTTPS工作原理 1
- Pytorch使用笔记
- 在Ubuntu18.04上安装USTC-TK2016
- 关于我的计算机的英语作文,关于电脑的英文作文精选5篇
- ADS-B地面接收机 AERO-1090-2
- openframeworks播放mp4,avi的视频格式
- bullmind在线uml软件,在线流程图软件
热门文章
- 110 AddressBook
- SPI 读取不同长度 寄存器_几种常用的总线设计:UART/SPI/I2C
- 富有哲理的10则故事(必读经典)
- 《学习之道》第二章专注思维和发散思维
- 天牛须matlab,BAS天牛须搜索优化算法.pdf
- 来自CodeSmith的震撼
- lenovo服务器换系统重装系统_联想服务器重装系统教程
- nls_lang环境变量linux设置,设置NLS_LANG环境变量
- table总结insertRow、deleteRow 学习
- Android无网络传输文件之WifiP2P