mybatis的 <choose><when><otherwise>标签和<if>标签的区别
首先最重要的一点是when与otherwise标签一定是在choose内部使用的
其次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>
if 标签不会跳出判断语句,下面有一个容易忘记的点顺便提一下
使用if标签中的==判断字符串的时候应该写成
<if test='type=="y"'> and status = 0
</if>
而不是
<if test="type=='y'"> and status = 0
</if>
mybatis是使用的OGNL表达式来进行解析的,在OGNL的表达式中,’y’会被解析成字符,因为java是强类型的,char 和 一个string 会导致不等。所以if标签中的sql不会被解析。具体的请参照 OGNL 表达式的语法
mybatis的 <choose><when><otherwise>标签和<if>标签的区别相关推荐
- Mybatis——mapper.xml中常用的SQL相关标签简介
题外话:使用Map方式用于传参,也是一种比较方便的方法 Map<String,Object> params = new HashMap<>(); params.put(&quo ...
- MyBatis—insert语句返回主键和selectKey标签
本文已同步至个人博客liaosi's blog - MyBatis-insert语句返回主键和selectKey标签 往数据库中插入一条记录后,有时候我们需要这条记录的主键,用于后续的操作.如果在插入 ...
- MyBatis——动态SQL语句——if标签和where标签复合使用
功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...
- Mybatis if标签和where标签结合巧妙使用
本文章描述的是 Mybatis if标签和where标签的结合使用 [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 免费开源 关注 你不会迷路 [x3]系列文章 ...
- javaweb带父标签的自定义标签
1.完整的示例代码:要实现的功能是父标签中有name属性,子标签将父标签的name属性值打印到jsp页面上. 1.1 父类和子类的标签处理器类 testParentTag.java package c ...
- JSTL标签之核心标签
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管理格式化.XML 操作以及数 ...
- 06-typeAliases标签和package标签
目录 一.typeAliases 1.连接数据库配置文件 2.映射文件 二.package 一.typeAliases 在 连接数据库的xml 文件中配置typeAliases,这样映射文件的xml的 ...
- 学会怎样使用Jsp 内置标签、jstl标签库及自定义标签
学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签. jsp标签的分 ...
- JSP→JSTL标准标签库简介与环境搭建、JSTL助手EL表达式EL隐式对象、标签→out、set、if、多选择配合、foreach、redirect、格式化、JSTL函数标签、自定义标签、标签类架构
JSTL标准标签库简介与环境搭建 EL表达式与EL隐式对象 out标签 set标签 remove标签 catch标签 if标签 choose.when.otherwise配合标签 foreach标签 ...
- java jstl标签库_JSTL标签库
1.什么是JSTL? JSTL全称为 JSP Standard Tag Library 即JSP标准标签库.它与EL表达式一样,也是为了替换掉JSP中的java代码.它提供了一系列的JSP标签,实现了 ...
最新文章
- Anchor的泛化:统一物体检测、实例分割、姿态估计的Point-set Anchor
- 您是否应该始终偏爱xrange()而不是range()?
- 编程学习记录12:Oracle数据库的一些基本操作2,表相关操作,添加约束
- [转载] 什么是istio 官网内容
- 牛客网--19校招--俄罗斯方块
- MySQL数据库服务器搭建及基本管理
- webview 禁用横竖屏切换_X5内核WebView横屏切换崩溃
- JS 中的call,apply,bind 和 caller, callee
- 惠普服务器硬件检测软件吗,惠普 PROLIANT 服务器硬件检测工具使用方法
- 解决win10删除文件时找不到该项目的问题
- 简述三级管开关的导通条件
- Ubuntu20.04 安装搜狗拼音
- 2022凉茶市场份额
- 二手不是垃圾,回收再生才是主流——GRS
- autohotkey_如何编写一个AutoHotkey脚本
- php获取QQ音乐直链,微信小程序-获取QQ音乐直链
- 实践!在Spring-Boot启动时添加方法运行,查漏补缺
- git push问题:kex_exchange_identification: read: Connection reset by peer
- 成为数据科学家的第一个project
- Acrel-5010重点用能单位能耗在线监测系统在湖南三立集团的应用
热门文章
- 网络编程------IP地址,端口号,套接字,网络字节序
- 解决桌面文件图标变黑方法
- 【误判心理 学1.0】奖励和惩罚 超级反应倾向
- 计算机安装xp蓝屏怎么办,当我在笔记本电脑上安装XP时,出现蓝屏. 我该怎么解决?...
- Google Play 政策更新提醒与重点解读 | 2021 年第四季度
- css scroll 上手试验 (width/scrollHeight等)
- 深度学习中的Momentum算法原理
- 安装麦咖啡8.7出现--错误1920
- GLAPI/glTexStorage2D
- 大厂门槛高?阿里内部5份专属PDF带你激流勇进,勇夺offer