MyBatis-3

目录

🍊动态SQL

🍊IF标签

🍊trim标签

🍊where标签

🍊set标签

🍊foreach标签

🍊include标签


🍊动态SQL

动态sql,就是,可用性非常的高,因为你比如查询语句,你不能说按照固定的代码去实现固定的查询逻辑,就是它有可能按这个查询,也有可能按那个查询,这种是动态的,对吧,所以我们在这种复杂的场景下,就应该做到千变万化。这是我的理解。所以就需要学习标签了。

🍊IF标签

接口

对应的xml

这个if标签就是这样用的,需要注意的是,字段和values后面跟着的值,也都要加上if标签,才能确保sql语句的正确语法。

测试

我们没有设置gender的值。

结果

正确执行!

但是由于,逗号也加在了if标签里,当逗号在最后面的时候,sql语句肯定就错了,这里我不演示,所以我们就需要学习下一个标签了。

🍊trim标签

trim标签共有4个参数,是按你的需求来的,不是全都要写上。

prefix:表示整个语句块,以prefix的值作为前缀

suffix:表示整个语句块,以suffix的值作为后缀

prefixOverrides:表示整个语句块要去除掉的前缀

suffixOverrides:表示整个语句块要去除掉的后缀缀

接口

对应的xml

我们这个逗号,给它放在值的后面,因为我们的这个操作是去除整个trim标签里面的最后面的,嘛

注意我们的trim标签呢,不要在里面包裹( 和 )括号,

测试

结果

成功!

🍊where标签

就有时候啊,我们的查询语句,可能啥字段的值也不填,也就是where有时候不需要,但你有不确定,这时候,就需要用where标签了。

接口

对应的xml

where标签就直接把原本的那个sql语句的where给替换了。

测试

我们对象啥也不写,就是想让他查询整个语句。

结果

结果正确。

🍊set标签

更新操作时,set标签可以去逗号,但是set标签里面不能直接啥也没有,它那个set关键字是会保留的,这和where标签不一样。

接口

对应的xml

我们留了个age字段的更新,确保set标签里不为空,但是我这样写,其实有问题,当password不为空,可是我没有给它后面加逗号,不过对于我们来了解set标签的作用,不影响,哦,还有一点就是set标签能去除最后的那个逗号,这个我没演示,大家可以试试。

测试

结果

结果正确!

🍊foreach标签

就有时候,我们delete语句,需要批量删除,需要用到foreach标签了

接口

传递一个整数集合。

对应的xml,

这个foreach标签呢,就涉及4个参数了,

首先collection:是要和我们的接口传递的那个名字相同的,

open:以 ( 括号开头。

close: 以 )括号结尾。

separator:以逗号分割。

测试

结果

删除成功!这里表示的意思是删除了3条数据。

🍊include标签

就是这个标签,能极大的复用我们写的sql语句,

接口

对应的xml

这个sql标签,就是配合include标签来实现sql语句复用的,给它起个id名就这个名字代表这里面的整个sql语句。

include标签的refid:表示要引用的哪个sql片段

refid的英文叫改装,好像也可以这样理解,改装我们的sql语句,哈哈哈,好像有点味道喝。

测试

结果

结果正确。


完结了,又是爆肝的一天哈哈。

相关推荐
java_logo2 分钟前
Docker 部署 MongoDB Community Server:轻松搭建文档数据库平台
数据库·mongodb·docker·nosql·文档数据库·轩辕镜像·mongodb-server
服务端相声演员11 分钟前
MySQL的select distinct ..Union all和select..union的区别
数据库·mysql
2501_9304724411 分钟前
深度复盘|数据库迁移实战(下):从自建 MySQL 5.7 到腾讯云 MySQL 8.0 的 SQL 兼容改造
数据库·mysql·腾讯云
2501_9304724413 分钟前
深度复盘|数据库迁移实战(上):腾讯云助手解析慢查询日志,定位索引缺失与语法不兼容
数据库·阿里云·ffmpeg·云计算·腾讯云·aws
SelectDB技术团队15 分钟前
从 ClickHouse 迁移到 Doris:SQL 兼容、同步与验证清单
数据库·人工智能·sql·clickhouse·apache doris·selectdb·湖仓架构升级
敲代码的嘎仔23 分钟前
从零实现视频续播 + 学习进度统计:前端心跳、条件更新、GROUP BY 统计全链路拆解
java·前端·数据库·学习·面试·职场和发展·音视频
草莓熊Lotso27 分钟前
【Redis 初阶】C++ 客户端实战:从 RESP 协议到 redis-plus-plus 工程化用法
linux·开发语言·网络·数据库·c++·redis·缓存
dunge20261 小时前
2026年9月11日|ChatGPT Pro + Codex:GPT‑6 Astra 数据库性能优化
数据库·gpt·chatgpt
NeilYuen1 小时前
【kv存储】结合faiss构建向量内存数据库
数据库·faiss
风哥2号1 小时前
数据库教程FGMT18‑Oracle‑EMCC智能化集中运维管理系统
运维·数据库·oracle