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)语句的更多相关文章

  1. MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用choose, ...

  2. MyBatis动态SQL之一使用 if 标签和 choose标签

    bootstrap react https://segmentfault.com/a/1190000010383464 xml 中 < 转义 to thi tha <if test=&qu ...

  3. MyBatis从入门到精通(第4章):MyBatis动态SQL【if、choose 和 where、set、trim】

    (第4章):MyBatis动态SQL[if.choose 和 where.set.trim] MyBatis 的强大特性之一便是它的动态 SQL.MyBatis 3.4.6版本采用了功能强大的OGNL ...

  4. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

  5. 9.mybatis动态SQL标签的用法

    mybatis动态SQL标签的用法   动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...

  6. 超全MyBatis动态SQL详解!( 看完SQL爽多了)

    MyBatis 令人喜欢的一大特性就是动态 SQL. 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的. MyBatis 动态 SQL 的出现, 解决了这个麻烦. My ...

  7. Mybatis动态SQL简单了解 Mybatis简介(四)

    动态SQL概况 MyBatis 的强大特性之一便是它的动态 SQL 在Java开发中经常遇到条件判断,比如: if(x>0){ //执行一些逻辑........ }   Mybatis应用中,S ...

  8. mybatis原理分析学习记录,mybatis动态sql学习记录

    以下个人学习笔记,仅供参考,欢迎指正. MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架,其主要就完成2件事情: 封装JDBC操作 利用反射打通Java类与SQL语句之间的相互转 ...

  9. mybatis 动态sql和参数

    mybatis 动态sql 名词解析 OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性, ...

  10. 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 ...

随机推荐

  1. Centos下安装php mysql pdo以及gd扩展

    pdo扩展安装: yum install php-pdo pdomysql扩展安装: yum install php-pdo_mysql gd库扩展安装: yum install php-gd 安装后 ...

  2. PIL或Pillow学习2

    接着学习下Pillow常用方法: PIL_test1.py : ''' 9, Pillow图像降噪处理 由于成像设备.传输媒介等因素的影响,图像总会或多或少的存在一些不必要的干扰信息,我们将这些干扰信 ...

  3. Vmware ESXi 是免费吗?一文弄懂vSphere功能特性及ESXi与vSphere到底有什么区别和联系。

    目录 收起 一.对VMware vSphere及ESXi的相关疑问 1.Vmware vSphere 有些什么功能? 2.ESXi 是否真正免费? 3. ESXi 和 vSphere 到底有什么区别, ...

  4. Sa-Token v1.41.0 发布 🚀,来看看有没有令你心动的功能!

    Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证.权限认证.单点登录.OAuth2.0.微服务网关鉴权 等一系列权限相关问题. 目前最新版本 v1.41.0 已推送至 Mav ...

  5. langchain0.3教程:从0到1打造一个智能聊天机器人

    在上一篇文章<大模型开发之langchain0.3(一):入门篇> 中已经介绍了langchain开发框架的搭建,最后使用langchain实现了HelloWorld的代码案例,本篇文章将 ...

  6. 【Ubuntu】vim-9.1.0821 编译安装

    [Ubuntu]vim-9.1.0821 编译安装 零.起因 由于 Ubuntu 库中的vim版本只有8点几,满足不了需求,故需要自己编译安装更新的版本,本文介绍如何安装更新的vim版本. 壹.操作步 ...

  7. ASP.NET Web.config Transformations

    ... 参考文档 Web Deployment Content Map for Visual Studio and ASP.NET 微软ASP.NET站点部署指南(3):使用Web.Config文件的 ...

  8. 1678. 设计 Goal 解析器

    1678. 设计 Goal 解析器 class Solution { public String interpret(String command) { char[] ch = command.toC ...

  9. JIT 编译后的代码存储位置

    JIT 编译后的代码存储位置 1. 存储位置 JIT 编译后的本地机器代码被存储在 JVM 的 Code Cache(代码缓存区)中. Code Cache 是 JVM 内存的一部分,用于保存 JIT ...

  10. Java AI(智能体)编排开发就用 Solon Flow

    本例参考 dify 的 chatFlow 的效果,模拟实现视频内容: https://www.toutiao.com/video/7455114080131482152/ Solon Flow 是一个 ...