MyBatis动态sql之choose(when、otherwise)用法
if标签是与(and)的关系,只要test中的表达式为 true,就会执行 if 标签中的条件;而 choose 是或(or)的关系,并不想应用所有的条件,而只是想从多个选项中选择一个。
choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
<!-- 按顺序将实体类 User 第一个不为空的属性作为:where条件 -->
@select("<script>"+"SELECT * "+" FROM User u "+"<where> "+" <choose>"+" <when test='username !=null '> "+" u.username LIKE CONCAT('%', #{username}) "+" </when > "+" <when test='sex != null and sex != '' '> "+" AND u.sex = #{sex}" +" </when > "+" <when test='birthday != null '> "+" AND u.birthday = #{birthday} " +" </when > "+" <otherwise> "+" </otherwise> "+" </choose> "+"</where> "+"</script>") @select("<script>"+"SELECT * "+" FROM User u "+" WHERE 1 = 1" + //为了保证sql不报错建议使用<where>" <choose>"+" <when test='title != null'> "+" and title = #{title} " +" </when > "+" <when test='content != null '> "+" and content = #{content} " +" </when > "+" <otherwise> "+" and owner = "owner1" " +" </otherwise> " </choose> "+"</script>")
<where>使用用法点击该句可直接查看
MyBatis动态sql之choose(when、otherwise)用法相关推荐
- MyBatis动态SQL之<foreach>用法
目录 一.foreach元素的属性 二.collection属性值的三种情况 三.代码示例 四.相关错误 一.foreach元素的属性 collection: foreach的对象,作为入参,对象为l ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...
- mybatis动态sql及分页
1. 动态sql简述 mybatis的动态sql语句是基于OGNL表达式的.可以方便的在sql语句中实现某些逻辑. 总体说来mybatis动态SQL语句主要有以下几类: if 语句 (简单的条件判断) ...
- MyBatis Dynamic SQL(一)— 真正的Mybatis动态sql — MyBatis Dynamic SQL
目录 现状 MyBatis Dynamic SQL 项目地址 官方文档 项目介绍 作者 Mybatis Generator 简介 特性 目标 提示 快速使用 步骤 定义常量Tables和Columns ...
- Mybatis 动态SQL
Mybatis 动态SQL 一 .动态SQL 数组 array 使用foreach 标签 <!-- mybatis的集合操作知识点: 如果遇到集合参数传递,需要将集合遍历标签: foreach ...
- MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...
- 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...
- MyBatis动态SQL,写SQL更爽
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...
- 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 整理 ...
最新文章
- bootstrap 新闻列表_kuapingUI 2.2 版本发布,跨屏 UI-bootstrap 大组件 UI 框架
- Trie树合并 + SG函数 ---- BZOJ4730. Alice和Bob又在玩游戏(动态开点Trie 树上全局异或标记 + 合并 + 博弈论)
- 漫画:程序员太难了!为什么 Java 中的 main 方法必须是它?
- python入门简介
- mysql db.opt+ (frm,MYD,MYI)备份与还原数据库
- UA MATH571A R语言回归分析实践 多元回归1 医疗费用的决定
- 57. Leetcode 257. 二叉树的所有路径 (二叉树-二叉树路径和)
- 160个CrackMe002
- 技术贴:asp.net实现唯一账户在线 禁止同一帐号同时在线 asp.net实现您的帐号在别处登录,您已被迫下线!...
- centos重置系统_双系统下Linux系统无法启动及其引导丢失之解决
- linux block挂io,linux:在qemu中运行自编译内核:VFS:无法在未知的wn-block(0,0)上挂载root fs...
- Android 中的MVP 模式
- linux之lsof使用技巧
- c语言怎么删掉一个空格,新人提问:如何将输出时每行最后一个空格删除
- matlab中方差分析的自由度,多因素方差分析:自由度
- 详解Java设计模式之观察者模式(Observer Pattern)
- 索引导致大量写入数据时效率低下
- 最后一批90后开始养生了,中医科普短视频会火吗?
- 污水处理问题多,泵站自动化控制系统是这样解决的
- java身份证格式强校验
热门文章
- Yii--Sessions 和 Cookies
- php 转换 html code,PHP 将 HTML 代码 转换到 UBB 论坛代码
- ngx.print与ngx.say
- Hexo博客配置SSL证书
- 代驾行业开发APP需要注意哪些
- SUSE史上首位女性CEO Melissa Di Donato,不止有“三把火”
- MySQL启动提示The server quit without updating PID file (/[失败]sqld/mysqld.pid).
- 大专云计算是计算机吗,[扫盲加扯淡,我说云计算]大专学云计算很扯淡吗
- mx-link无线打印服务器,TP-LINK USB Printer Controller(TP-LINK打印服务器)
- 数据结构课程设计---赛事统计,校园导航,算术表达式