MyBatis强大的动态Sql功能

1.动态不定增加

根据需求 , 动态的拼接SQL 。 用户有的信息是必须输入,但有的不是必须进行输入

比如在填写注册信息的时候,有时候密码是一定要填写的,而银行卡号不是必须填写的

1)注解方式

测试类中 :

使用 if 标签 可以实现动态 SQL

2)XML方式

XML文件中:

测试类中:

2.查询

此处使用 XML 方式实现动态查询

需求一般是需要根据特定的字段显示特定的内容

比如网上商城手机,选择256G内存 + 16G运行内存 显示的就是16+256配置的手机。如果什么也不选,那么就显示出来所有的手机列表。

这样写也可以 , 但是会出现问题 , 比如如果只使用 age 作为查询字段,那么 SQL 语句会变成 :

可以看出来前面多了个 and

可以使用 trim 进行去除

但是使用 where 更好

如果查询条件都为空 , where 标签会自动去除where关键字

3.修改

mysql 中修改的格式为 :

sql 复制代码
update userinfo set a = ?,b= ?where c = ?

如果直接这样写,SQL 语句是这样的:

那么如何去除逗号, 可以使用 trim 标签

当然,推荐使用 set 标签

4.删除(批量)

注意 : for each 中 collection 参数的情况如下:

使用 id 进行批量删除

separator 是元素之间的分割

foreach 标签就是对应 in( ) 里面的内容

这里需要注意的就是

如果只有单个参数并且是 List , 那么collection 的 id 属性必须是list , 如果是其他 需要进行重命名

重命名的情况:

单元测试类中:

xml文件中:

不重命名 , 那么 collection 所对应的值 需要改为 list 因为单元测试类中使用的是 List

如果使用的是 String[ ] 之类的,就需要使用 array

相关推荐
_dindong7 小时前
Linux网络编程:结合内核数据结构详谈epoll的工作原理
linux·服务器·网络
buyutang_7 小时前
Linux网络编程:Socket套接字编程概念及常用API接口介绍
linux·服务器·网络·tcp/ip
DN金猿7 小时前
恢复 Linux 上误删除的文件
linux·运维·服务器
hadage2337 小时前
--- redis 常见问题 ---
数据库·redis·mybatis
5***26228 小时前
SQL Server导出和导入可选的数据库表和数据,以sql脚本形式
数据库·sql
python百炼成钢8 小时前
55.Linux ADC框架(IIO续)
linux·运维·服务器·驱动开发
_院长大人_9 小时前
MyBatis Plus 分批查询优化实战:优雅地解决 IN 参数过多问题(实操)
java·mybatis
a31582380610 小时前
Android Framework开发知识点整理
android·java·linux·服务器·framework·android源码开发
越来越无动于衷10 小时前
HTTP 文件服务器 Windows 开机自启动全维度总结
服务器·windows·http
云和恩墨11 小时前
AI驱动的Oracle SQL优化:从经验依赖到智能协同的三大价值
人工智能·sql·oracle·深度优先·dba