6 MyBatis动态SQL之choose(when、otherwise)语句
1 MyBatis动态SQL之if 语句
2 MyBatis动态sql之where标签|转
3 MyBatis动态SQL之set标签|转
4 MyBatis动态SQL之trim元素|转
5 MyBatis动态sql中foreach标签的使用
6 MyBatis动态SQL之choose(when、otherwise)语句
7 MyBatis动态SQL之bind标签|转
有时候,我们不想用所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis提供了choose元素,它有点像Java中的switch语句。还是上面的例子,但是策略变为:传入了 id就按id查找,传入了loginname 和password就按loginnam 和password查找,若两者都没有提供,就返回所有sex等于男的Employee。
<select id="selectEmployeeChoose" parameterType="hashmap" resultType="my.mybatis.domain.Employee">
SELECT * FROM tb employee WHERE state = 'ACTIVE'
<!--- 如果传入了id,就根据id查询,没有传入id就根据loginname和password查询,否则查询sex等于男的数据-->
<choose>
<when test="id != null">
and id= #{id}
</when>
<when test="loginname != null and password != null">
loginname = #{loginname} and password = #{password}
and
</when>
<otherwise>
and sex = '男'
</otherwise>
</choose>
</select>
提供id、loginname 和password的时候,调用selectEmployeeChoose()方法,控制台显示如下:
SELECT * FROM tb_employee WHERE state = 'ACTIVE' and loginname = ? and password = ?
由于传递的参数只包括loginname和password,所以sql语句是按照loginname和password查找,查询返回的Emplyee对象就是loginname,即jack,并且password是123456的对象。没有传递任何参数时,控制台显示如下:
SELECT * FROM tb_employee WHERE state = 'ACTIVE' and sex = '男'
可以看到,由于没有传递任何参数,故sql语句执行的是< otherwise >元素里面的查询条"sex='男'"的对象。
6 MyBatis动态SQL之choose(when、otherwise)语句的更多相关文章
- MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用choose, ...
- MyBatis动态SQL之一使用 if 标签和 choose标签
bootstrap react https://segmentfault.com/a/1190000010383464 xml 中 < 转义 to thi tha <if test=&qu ...
- MyBatis从入门到精通(第4章):MyBatis动态SQL【if、choose 和 where、set、trim】
(第4章):MyBatis动态SQL[if.choose 和 where.set.trim] MyBatis 的强大特性之一便是它的动态 SQL.MyBatis 3.4.6版本采用了功能强大的OGNL ...
- mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...
- 超全MyBatis动态SQL详解!( 看完SQL爽多了)
MyBatis 令人喜欢的一大特性就是动态 SQL. 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的. MyBatis 动态 SQL 的出现, 解决了这个麻烦. My ...
- Mybatis动态SQL简单了解 Mybatis简介(四)
动态SQL概况 MyBatis 的强大特性之一便是它的动态 SQL 在Java开发中经常遇到条件判断,比如: if(x>0){ //执行一些逻辑........ } Mybatis应用中,S ...
- mybatis原理分析学习记录,mybatis动态sql学习记录
以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...
- mybatis 动态sql和参数
mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, ...
- MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
目录 0 一起来学习 mybatis 1 数据准备 2 if 标签 2.1 在 WHERE 条件中使用 if 标签 2.1.1 查询条件 2.1.2 动态 SQL 2.1.3 测试 2.2 在 UPD ...
随机推荐
- Centos下安装php mysql pdo以及gd扩展
pdo扩展安装: yum install php-pdo pdomysql扩展安装: yum install php-pdo_mysql gd库扩展安装: yum install php-gd 安装后 ...
- PIL或Pillow学习2
接着学习下Pillow常用方法: PIL_test1.py : ''' 9, Pillow图像降噪处理 由于成像设备.传输媒介等因素的影响,图像总会或多或少的存在一些不必要的干扰信息,我们将这些干扰信 ...
- Vmware ESXi 是免费吗?一文弄懂vSphere功能特性及ESXi与vSphere到底有什么区别和联系。
目录 收起 一.对VMware vSphere及ESXi的相关疑问 1.Vmware vSphere 有些什么功能? 2.ESXi 是否真正免费? 3. ESXi 和 vSphere 到底有什么区别, ...
- Sa-Token v1.41.0 发布 🚀,来看看有没有令你心动的功能!
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证.权限认证.单点登录.OAuth2.0.微服务网关鉴权 等一系列权限相关问题. 目前最新版本 v1.41.0 已推送至 Mav ...
- langchain0.3教程:从0到1打造一个智能聊天机器人
在上一篇文章<大模型开发之langchain0.3(一):入门篇> 中已经介绍了langchain开发框架的搭建,最后使用langchain实现了HelloWorld的代码案例,本篇文章将 ...
- 【Ubuntu】vim-9.1.0821 编译安装
[Ubuntu]vim-9.1.0821 编译安装 零.起因 由于 Ubuntu 库中的vim版本只有8点几,满足不了需求,故需要自己编译安装更新的版本,本文介绍如何安装更新的vim版本. 壹.操作步 ...
- ASP.NET Web.config Transformations
... 参考文档 Web Deployment Content Map for Visual Studio and ASP.NET 微软ASP.NET站点部署指南(3):使用Web.Config文件的 ...
- 1678. 设计 Goal 解析器
1678. 设计 Goal 解析器 class Solution { public String interpret(String command) { char[] ch = command.toC ...
- JIT 编译后的代码存储位置
JIT 编译后的代码存储位置 1. 存储位置 JIT 编译后的本地机器代码被存储在 JVM 的 Code Cache(代码缓存区)中. Code Cache 是 JVM 内存的一部分,用于保存 JIT ...
- Java AI(智能体)编排开发就用 Solon Flow
本例参考 dify 的 chatFlow 的效果,模拟实现视频内容: https://www.toutiao.com/video/7455114080131482152/ Solon Flow 是一个 ...