MyBatis 中的 choose、then、otherwise
MyBatis 中的 choose、then、otherwise
作用
MyBatis 提供的 choose、then、otherwise 标签,用起来有些像 Java 中的 switch 、case、default。当我们想在不同条件下执行不同sql语句则可以使用。
使用格式
choose标签包裹整个代码块,when标签用于表达生效条件,当所有when的条件都没能成立时走进otherwise标签。
<choose><when test=条件1></when><when test=条件2></when><otherwise></otherwise></choose>
实例
下面这段表示,当输入了userName时则按照用户名查找,当输入了level时则按照等级查找,两者都没输入时则输出所有等级为1的用户。
<select id="queryUserByWhat" parameterType="User" resultMap="User">select * from user_info where<choose><when test="userName != null">user_name = #{userName}</when><when test="level != null">level = #{level}</when><otherwise>level = '1'</otherwise></choose></select>
接下来发报文做一下测试,当前数据库中有以下数据:
id | user_name | password | real_name | create_time | level |
---|---|---|---|---|---|
1 | lileilei | 20000229 | 李雷雷 | 20230101 | 9 |
2 | hanmeimei | 20021118 | 韩梅梅 | 20230101 | 9 |
3 | zhangsan | 20080506 | 张三 | 20230110 | 1 |
4 | lisi | 20050729 | 李四 | 20230112 | 1 |
5 | wangwu | 19980121 | 王五 | 20230207 | 2 |
6 | zhaoliu | 20030601 | 赵六 | 20230207 | 3 |
1.请求报文带userName
请求报文
{"data": {"userName": "lileilei"}
}
响应报文
{"data": [{"id": 1,"userName": "lileilei","password": "20000229","name": "李雷雷","createTime": "20230101","level": "9"}],"returnCode": "000000","returnMessage": null
}
成功返回了用户名为lileilei的用户信息。
2.请求报文带level
请求报文
{"data": {"level": "9"}
}
响应报文
{"data": [{"id": 1,"userName": "lileilei","password": "20000229","name": "李雷雷","createTime": "20230101","level": "9"},{"id": 2,"userName": "hanmeimei","password": "20021118","name": "韩梅梅","createTime": "20230101","level": "9"}],"returnCode": "000000","returnMessage": null
}
成功返回了等级为9的用户信息。
3.无参数
请求报文
{"data": {}
}
响应报文
{"data": [{"id": 3,"userName": "zhangsan","password": "20080506","name": "张三","createTime": "20230110","level": "1"},{"id": 4,"userName": "lisi","password": "20050729","name": "李四","createTime": "20230112","level": "1"}],"returnCode": "000000","returnMessage": null
}
成功返回了等级为1的用户信息。
MyBatis 中的 choose、then、otherwise相关推荐
- mybatis中<choose>标签的用法
choose 标签是按顺序判断其内部 when 标签中的 test 条件出否成立,如果有一个成立,则 choose 结束.当 choose 中所有 when 的条件都不满则时,则执行 otherwis ...
- 6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)
视频地址:http://edu.51cto.com/sd/be679 动态Sql是Mybatis的核心,就是对我们的sql语句进行灵活的操作,他可以通过表达式,对sql语句进行判断,然后对其进行灵活的 ...
- Mybatis 中使用CDATA
CDATA是什么 CDATA 是由XML定义的,跟Mybatis没啥关系. CDATA 指的是不由 XML 解析器进行解析的文本数据.被<![CDATA[]]>这个标记所包含的内容将表示为 ...
- c++ 传入动态参数_一文了解Mybatis中动态SQL的实现
一.动态SQL简介 MyBatis的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的 ...
- 9、mybatis中动态sql的使用
对于初学者,如何进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...
- Mybatis中强大的功能元素:resultMap
转载自 Mybatis中强大的功能元素:resultMap 前言 在Mybatis中,有一个强大的功能元素resultMap.当我们希望将JDBC ResultSets中的数据,转化为合理的Java ...
- SQL 拼接语句输出_一文了解Mybatis中动态SQL的实现
一.动态SQL简介 MyBatis的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的 ...
- Mybatis中强大的resultMap
本文来说下mybatis中的resultMap,在平时的开发中resultType使用的比较多.resultType在解决一对一的关系时候比较方便,但是在设计到多对多的时候,使用resultMap比较 ...
- Java - MyBatis中的动态SQL是什么意思?
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 对于一些复杂的查询,我们可能会指定多个查询条件,但是 ...
最新文章
- Keep the Customer Satisfied
- SDNU 1178.能量项链(区间dp)
- java mockserver搭建_搭建Mock Server
- html固定dl高度_HTML入门笔记1
- 拆卸invokedynamic
- [机器学习笔记] Note2--单变量线性回归
- 机构研究显示iPhone 12 Pro Max是美国最受欢迎5G手机
- 想以游戏纸娃娃系统专利主张暴雪的暗黑3侵权? 先过暗黑2这关!
- UNITY游戏制作流程
- java 分组求和函数_java8 怎么精简分组求和
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- JS反转链表 - I
- 批处理命令%~dp0详解
- [ble_mesh]3.9 Mesh beacon
- 活水决策体系七:辩证思维之三大规律
- 《赋能:打造应对不确定性的敏捷团队》
- Halium 9 尝鲜 -- 在小米平板4上的移植 (四)
- Mybatis 查询 List作为参数查询 条件中有多个参数,foreach in 查询
- 如何用python turtle 画出奥运五环图
- 【帆软报表】报表类型简介
热门文章
- python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...
- 智能电网的电能预估及价值分析
- 电力电子技术总结-电力电子器件1
- 为何axure导出html浏览器看不,Axure生成的html为什么用浏览器打不开?
- 美拍作者页视频的保存的方法
- matlab 画偏振态,MATLAB:绘制三维偏振光动画
- ResNet 阅读学习和实现
- 金山快盘 android,金山快盘Android新版正式上线 重视用户体验更便捷
- 数据增强算法SMOTE的实验结果分析
- 移动端TB(D)R架构基础