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

  1. MyBatis动态SQL之<foreach>用法

    目录 一.foreach元素的属性 二.collection属性值的三种情况 三.代码示例 四.相关错误 一.foreach元素的属性 collection: foreach的对象,作为入参,对象为l ...

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

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

  3. mybatis动态sql及分页

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

  4. MyBatis Dynamic SQL(一)— 真正的Mybatis动态sql — MyBatis Dynamic SQL

    目录 现状 MyBatis Dynamic SQL 项目地址 官方文档 项目介绍 作者 Mybatis Generator 简介 特性 目标 提示 快速使用 步骤 定义常量Tables和Columns ...

  5. Mybatis 动态SQL

    Mybatis 动态SQL 一 .动态SQL 数组 array 使用foreach 标签 <!-- mybatis的集合操作知识点: 如果遇到集合参数传递,需要将集合遍历标签: foreach ...

  6. MyBatis动态SQL(认真看看, 以后写SQL就爽多了)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...

  7. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...

  8. MyBatis动态SQL,写SQL更爽

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...

  9. 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 整理 ...

最新文章

  1. bootstrap 新闻列表_kuapingUI 2.2 版本发布,跨屏 UI-bootstrap 大组件 UI 框架
  2. Trie树合并 + SG函数 ---- BZOJ4730. Alice和Bob又在玩游戏(动态开点Trie 树上全局异或标记 + 合并 + 博弈论)
  3. 漫画:程序员太难了!为什么 Java 中的 main 方法必须是它?
  4. python入门简介
  5. mysql db.opt+ (frm,MYD,MYI)备份与还原数据库
  6. UA MATH571A R语言回归分析实践 多元回归1 医疗费用的决定
  7. 57. Leetcode 257. 二叉树的所有路径 (二叉树-二叉树路径和)
  8. 160个CrackMe002
  9. 技术贴:asp.net实现唯一账户在线 禁止同一帐号同时在线 asp.net实现您的帐号在别处登录,您已被迫下线!...
  10. centos重置系统_双系统下Linux系统无法启动及其引导丢失之解决
  11. linux block挂io,linux:在qemu中运行自编译内核:VFS:无法在未知的wn-block(0,0)上挂载root fs...
  12. Android 中的MVP 模式
  13. linux之lsof使用技巧
  14. c语言怎么删掉一个空格,新人提问:如何将输出时每行最后一个空格删除
  15. matlab中方差分析的自由度,多因素方差分析:自由度
  16. 详解Java设计模式之观察者模式(Observer Pattern)
  17. 索引导致大量写入数据时效率低下
  18. 最后一批90后开始养生了,中医科普短视频会火吗?
  19. 污水处理问题多,泵站自动化控制系统是这样解决的
  20. java身份证格式强校验

热门文章

  1. Yii--Sessions 和 Cookies
  2. php 转换 html code,PHP 将 HTML 代码 转换到 UBB 论坛代码
  3. ngx.print与ngx.say
  4. Hexo博客配置SSL证书
  5. 代驾行业开发APP需要注意哪些
  6. SUSE史上首位女性CEO Melissa Di Donato,不止有“三把火”
  7. MySQL启动提示The server quit without updating PID file (/[失败]sqld/mysqld.pid).
  8. 大专云计算是计算机吗,[扫盲加扯淡,我说云计算]大专学云计算很扯淡吗
  9. mx-link无线打印服务器,TP-LINK USB Printer Controller(TP-LINK打印服务器)
  10. 数据结构课程设计---赛事统计,校园导航,算术表达式