[MyBatis系列③]动态SQL

目录

1、简介

2、if标签

3、foreach标签

4、SQL抽取


⭐MyBatis系列①:增删改查

⭐MyBatis系列②:两种Dao开发方式

1 、简介

开发中在MyBatis映射文件配置SQL语句,但是前面配置的都是比较简单的,不涉及稍复杂的业务场景。想要应对复杂业务场景,则需要引入动态SQL。

MyBatis的动态SQL是一种在SQL语句中根据不同的条件生成不同的SQL片段的技术。它使得你能够根据不同的情况在SQL语句中动态地添加、修改或排除部分SQL代码,从而灵活地构建数据库查询或操作语句。动态SQL在处理不同的查询条件、排序、分页等方面非常有用,能够有效减少重复的SQL代码。

官网截图如下:

MyBatis 3在此基础上有了很大的改进,现在可以使用的元素不到一半。MyBatis使用强大的基于OGNL的表达式来消除大多数其他元素

MyBatis提供了四种标签:

|-----------------|---------------------------------|
| 标签 | 介绍 |
| <if> | 条件判断,在SQL语句中动态添加或排除部分代码。 |
| <choose> | 类似于switch语句,根据条件选择执行不同的代码块。 |
| <trim> | 修剪SQL中的多余连接词,用于动态生成WHERE或SET子句。 |
| <foreach> | 循环遍历集合,常用于生成IN子句等重复结构。 |

++这里重点是if和foreach++

2 、if标签

我们根据实体类的不同取值,使用不同的 SQL语句来进行查询。

比如在 id如果不为空时可以根据id查询,如果 username 不同空时还要加入用户名作为条件。

这种情况在我们的多条件组合查询中经常会碰到。

使用如下:

这里的<where>标签,会自动识别是否需要where,比如所有情况都不满足的时候,说明不需要拼接sql语句,则执行的是select * from user **,**如果去掉<where>,则需要使用如下写法来实现条件查询的效果:

阅读起来没有使用where标签那么美观。

3 、foreach标签

foreach标签的属性含义如下:

<foreach>标签用于遍历集合,它的属性:

  1. collection:代表要遍历的集合元素,注意编写时不要写#{}
  2. open:代表语句的开始部分
  3. close:代表结束部分
  4. item:代表遍历集合的每个元素,生成的变量名
  5. sperator:代表分隔符

循环执行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)

测试结果:

4 、SQL抽取

Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的。

用法:< sql id ="selectUser" **select *from User</ sql >

相关推荐
bug菌¹28 分钟前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人38 分钟前
SQL基础教程
数据库·sql·oracle
IT学长编程1 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇1 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
月空MoonSky1 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa1 小时前
【MySQL 06】表的增删查改
数据库·mysql
杨哥带你写代码1 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
郭二哈2 小时前
C++——模板进阶、继承
java·服务器·c++
A尘埃2 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23072 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端