MyBatis动态SQL
一、使用动态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相关推荐
- MyBatis动态SQL之 set 和 trim标记的使用示例
2019独角兽企业重金招聘Python工程师标准>>> 和之前的where一样,set和trim也是智能标记 在之前的user.xml中添加 <update id=" ...
- MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/homejim/p/9909657. ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦 ...
- 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL:
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 阿进的写字台 来源 | cnblogs.com ...
- MyBatis动态SQL,写SQL更爽
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...
- 认真看看, 以后写 SQL 就爽多了:MyBatis 动态 SQL
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 整理 ...
- MyBatis——动态SQL语句——if标签和where标签复合使用
功能需求 根据性别和名字查询用户 官方文档 MyBatis--动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` ...
- Mybatis 动态sql语句(if标签和where标签)
功能:根据性别和名字查询用户 查询sql语句: SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND us ...
- mybatis注解动态sql_超全MyBatis动态SQL详解
MyBatis 令人喜欢的一大特性就是动态 SQL.在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的.MyBatis 动态 SQL 的出现, 解决了这个麻烦. MyBa ...
- Mybatis 动态Sql语句《常用》
MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...
最新文章
- 使用IntelliJ IDEA 15和Maven创建Java Web项目
- 图像识别落地机会最多 腾讯全面输出视觉AI
- 用tomcat插件 在Eclipse 中配置Tomcat项目
- 实验六 html网页设计,网页设计.html · 谢泽华/面向对象与软件工程实验二:网页模仿 - Gitee.com...
- xml签名和普通数字签名
- NLP-基础知识-005(专家系统)
- 深入浅出MongoDB(二)概述
- c语言作业大全,C语言练习题(答案)
- 微信支付基于图计算的反欺诈实践
- SetupParameter(mil)
- USB Type-C PD快充简介
- 模板引擎不关心内容之——art-template,碰见的同步与fs.readFile异步以及函数回调问题的描述,针对fs的readfille读取文件时,返回不了异步函数返回值的解决方法
- python打印菱形三种方法_用python打印菱形的实操方法和代码
- 诺贝丽斯宣布成功完成收购爱励铝业
- Linux 查看quota状态,Linux命令之quota详解
- 算法 博弈论( 初级Nim游戏)
- PAT_乙级1012
- 银河英雄传说 - C++
- 九度OJ 题目1179:阶乘
- InSAR基础:雷达回波信号的构成(什么是振幅?什么是相位?)