一、使用动态SQL完成多条件查询
动态SOL是MyBatis的一个强大的特性。在使用JDBC操作数据时,如果查询条件特别多,将条件串联成SQL字符串是一件痛苦的事情。通常的解决方法是写很多的if-else条件语句对字符丰进行拼接,并确保不能忘了空格或在字段的最后省略逗号。MyBatis使用一种强大的动态SOL语言来改善这种情形。动态SQL基于OGNL的表达式,可使我们方便地在SQL语句中实现某些逻辑。用于实现动态SOL的元素如下:
if: 利用if实现简单的条件选择。
choose(when. otherwise):相当于Java中的switch语句,通常与when和othewise搭配。
where;简化SQL语句中where的条件判断。
set:解决动态更新语句。
trim:可以灵活地去除多余的关键字。
foreach:迭代一个集合,通常用于in条件。

1、修改UserMapper.java 的 getUserList()方法,代码如下:

2、在上述代码中,参数使用了@Param注解,并将参数 roleId 重命名为 userRole,故UserMapper.xml 的代码无须改造,代码如下:

**3、完成以上修改后,运行测试类,进行相应的方法测试。首先测试两个条件均给出的情况,测试方法(testGetUserList())**部分代码如下:

总结
MyBatis 在SQL 映射文件中可以使用灵活,智能的动态SQL 来实现SQL映射。
if+set:完成更新操作。
if+where:完成多条件查询。
if-trim:完成多条件查询(替代where)或者更新操作(替代set)。choose (when. otherwise): 完成条件查询(多条件下,选择其一)。
foresch.完成复杂查询,主要用于in条件查询中,迭代集合。其中最关键的部分就是collection属性,根据不同的入参类型,该属性值亦不同:
若人参对象为一个List实例,collection 属性值为list。若人参对象为一个数组,collection 属性值为array。
若人参对象为多个,就需要把它们封装为一个Map进行处理

MyBatis动态SQL相关推荐

  1. MyBatis动态SQL之 set 和 trim标记的使用示例

    2019独角兽企业重金招聘Python工程师标准>>> 和之前的where一样,set和trim也是智能标记 在之前的user.xml中添加 <update id=" ...

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

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

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

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

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

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

  5. MyBatis动态SQL,写SQL更爽

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

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

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

  7. MyBatis——动态SQL语句——if标签和where标签复合使用

    功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...

  8. Mybatis 动态sql语句(if标签和where标签)

    功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...

  9. mybatis注解动态sql_超全MyBatis动态SQL详解

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

  10. Mybatis 动态Sql语句《常用》

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

最新文章

  1. 使用IntelliJ IDEA 15和Maven创建Java Web项目
  2. 图像识别落地机会最多 腾讯全面输出视觉AI
  3. 用tomcat插件 在Eclipse 中配置Tomcat项目
  4. 实验六 html网页设计,网页设计.html · 谢泽华/面向对象与软件工程实验二:网页模仿 - Gitee.com...
  5. xml签名和普通数字签名
  6. NLP-基础知识-005(专家系统)
  7. 深入浅出MongoDB(二)概述
  8. c语言作业大全,C语言练习题(答案)
  9. 微信支付基于图计算的反欺诈实践
  10. SetupParameter(mil)
  11. USB Type-C PD快充简介
  12. 模板引擎不关心内容之——art-template,碰见的同步与fs.readFile异步以及函数回调问题的描述,针对fs的readfille读取文件时,返回不了异步函数返回值的解决方法
  13. python打印菱形三种方法_用python打印菱形的实操方法和代码
  14. 诺贝丽斯宣布成功完成收购爱励铝业
  15. Linux 查看quota状态,Linux命令之quota详解
  16. 算法 博弈论( 初级Nim游戏)
  17. PAT_乙级1012
  18. 银河英雄传说 - C++
  19. 九度OJ 题目1179:阶乘
  20. InSAR基础:雷达回波信号的构成(什么是振幅?什么是相位?)

热门文章

  1. 无需安装软件架设NOD32升级服务器指南!
  2. 《TCP/IP详解 卷1:协议》学习笔记(未完待续)
  3. C语言用随机函数做猜拳游戏,c语言猜拳游戏
  4. 13-4Happy Mid-Autumn Festival
  5. 分类模型效果评估指标
  6. 命令行窗口-隐藏黑窗口
  7. word文档分栏怎么设置
  8. 雨课堂《工程伦理》期末答案
  9. VMware Workstation下载及安装
  10. ios WKWebView之视频无法播放