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相关推荐

  1. mybatis中<choose>标签的用法

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

  2. 6.Mybatis中的动态Sql和Sql片段(Mybatis的一个核心)

    视频地址:http://edu.51cto.com/sd/be679 动态Sql是Mybatis的核心,就是对我们的sql语句进行灵活的操作,他可以通过表达式,对sql语句进行判断,然后对其进行灵活的 ...

  3. Mybatis 中使用CDATA

    CDATA是什么 CDATA 是由XML定义的,跟Mybatis没啥关系. CDATA 指的是不由 XML 解析器进行解析的文本数据.被<![CDATA[]]>这个标记所包含的内容将表示为 ...

  4. c++ 传入动态参数_一文了解Mybatis中动态SQL的实现

    一.动态SQL简介 MyBatis的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的 ...

  5. 9、mybatis中动态sql的使用

    对于初学者,如何进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...

  6. Mybatis中强大的功能元素:resultMap

    转载自  Mybatis中强大的功能元素:resultMap 前言 在Mybatis中,有一个强大的功能元素resultMap.当我们希望将JDBC ResultSets中的数据,转化为合理的Java ...

  7. SQL 拼接语句输出_一文了解Mybatis中动态SQL的实现

    一.动态SQL简介 MyBatis的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的 ...

  8. Mybatis中强大的resultMap

    本文来说下mybatis中的resultMap,在平时的开发中resultType使用的比较多.resultType在解决一对一的关系时候比较方便,但是在设计到多对多的时候,使用resultMap比较 ...

  9. Java - MyBatis中的动态SQL是什么意思?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 对于一些复杂的查询,我们可能会指定多个查询条件,但是 ...

最新文章

  1. Keep the Customer Satisfied
  2. SDNU 1178.能量项链(区间dp)
  3. java mockserver搭建_搭建Mock Server
  4. html固定dl高度_HTML入门笔记1
  5. 拆卸invokedynamic
  6. [机器学习笔记] Note2--单变量线性回归
  7. 机构研究显示iPhone 12 Pro Max是美国最受欢迎5G手机
  8. 想以游戏纸娃娃系统专利主张暴雪的暗黑3侵权? 先过暗黑2这关!
  9. UNITY游戏制作流程
  10. java 分组求和函数_java8 怎么精简分组求和
  11. Springboot实现阿里云通信短信服务有关短信验证码的发送
  12. JS反转链表 - I
  13. 批处理命令%~dp0详解
  14. [ble_mesh]3.9 Mesh beacon
  15. 活水决策体系七:辩证思维之三大规律
  16. 《赋能:打造应对不确定性的敏捷团队》
  17. Halium 9 尝鲜 -- 在小米平板4上的移植 (四)
  18. Mybatis 查询 List作为参数查询 条件中有多个参数,foreach in 查询
  19. 如何用python turtle 画出奥运五环图
  20. 【帆软报表】报表类型简介

热门文章

  1. python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...
  2. 智能电网的电能预估及价值分析
  3. 电力电子技术总结-电力电子器件1
  4. 为何axure导出html浏览器看不,Axure生成的html为什么用浏览器打不开?
  5. 美拍作者页视频的保存的方法
  6. matlab 画偏振态,MATLAB:绘制三维偏振光动画
  7. ResNet 阅读学习和实现
  8. 金山快盘 android,金山快盘Android新版正式上线 重视用户体验更便捷
  9. 数据增强算法SMOTE的实验结果分析
  10. 移动端TB(D)R架构基础