当前位置: 首页 > article >正文

【Mybatis】动态sql

一.动态sql

根据需求,动态的拼接sql

1.添加

根据用户的输入情况,进行动态插入

<if>标签

根据if标签判断某个字段是否为空,来动态的拼接sql语句

1.1注解方式

使用<script>标签将sql语句括起来

注意if标签中的test参数是传入对象中的属性,不是数据库字段

1.2xml方式

<trim>标签

处理符号问题<trim>标签

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

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

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

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


2.查询

处理and

<trim>标签

问题:如果查询条件为空,where还会留下来

解决方式:把where 1==1 写在外面 , <trim>标签内用and连接.

<where>标签

也可以去除最前面的and

如果查询条件为空,where标签会自动去除where关键字 [更优雅]


3.修改

处理逗号问题

<trim>标签

<set>标签

[更优雅]


4.删除

批量删除

<foreach>标签

对集合进行遍历时可以使用该标签

有如下参数

• collection:绑定⽅法参数中的集合,如 List,Set,Map或数组对象

• item:遍历时的每⼀个对象

• open:语句块开头的字符串

• close:语句块结束的字符串

• separator:每次遍历之间间隔的字符串

例如:根据多个id,删除用户数据

接口方法

xml实现

<include>标签

使用场景:在xml映射文件中配置SQL时,有时会存在很多重复的片段,此时就会存在很多冗余的代码.此时我们可以对重复的代码片段进行收取,将其用<sql>标签封装.然后再根据该<sql>标签的id,用<include>标签来引用这段sql片段.

封装:

引用:


总结

动态sql建议用xml来写, 可读性更高,并且还有书写有提示.


http://www.kler.cn/a/145294.html

相关文章:

  • AI在自动化测试中的伦理挑战
  • 为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1
  • 16.Word:石油化工设备技术❗【28】
  • C++:PTA L2-003 月饼
  • 第19篇:python高级编程进阶:使用Flask进行Web开发
  • 58.界面参数传递给Command C#例子 WPF例子
  • SpringBoot——配置及原理
  • 十大排序之归并排序(详解)
  • 基于WSL2+Docker+VScode搭建机器学习(深度学习)开发环境
  • 【Linux篇】gdb调试器的使用
  • 扩散模型实战(十二):使用调度器DDIM反转来优化图像编辑
  • C++ Qt QString用法详解与代码演示
  • 基于5G+物联网+SaaS+AI的农业大数据综合解决方案:PPT全文44页,附下载
  • 振弦式土压力计在岩土工程安全监测应用的方案
  • 项目去除git版本控制
  • 云计算学习哪些技术
  • WebGL/threeJS面试题扫描与总结
  • 编译器核心技术概览
  • Vue: Cannot find module @/xx/xx/xx.vue or its corresponding type declarations.
  • 网络运维与网络安全 学习笔记2023.11.26
  • PYTHON+CH347读写25系列flash
  • 鸿蒙4.0开发笔记之ArkTs语言基础与基本组件结构(四)
  • 使用el-scrollbar实现定位滚动,以及el-scrollbar去掉横向滚动条
  • 高并发内存池
  • 详解Rust编程中的生命周期
  • Spring Cache(缓存框架)