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

MyBatis高频问题-动态sql

目录

动态SQL

源码解析


接上篇MyBatis高频问题-延迟加载与分页插件 

动态SQL

什么是动态SQL?

SQL的内容是变化的,可以根据条件获取到不同的SQL语句主要是where部分发生变化。动态SQL的实现,使用的是MyBatis提供的标签

为什么使用动态SQL?

使用动态SQL可以解决某些功能的使用例如使用条件查询某个商品输入价格,地区等等进行筛选,如果使用静态SQL可能会查询出来的是一个空内容但使用动态SQL可以很好的解决这种问题

动态SQL的标签:

1、if标签中的test属性是必须的

2、if标签中test属性的值是false或者是true

3、如果为true,则if标签中的sql语句就会拼接。反之就不会拼接

4、test属性中可以使用的是:

当使用了@Param注解,那么test中要出现的是@Param注解指定的参数名。

当没有使用@Param注解,那么test中要出现的是:param1param2param3...

当使用了POJO,那么test中出现的是POJO类的属性名

5、在MyBatis的动态SQL中,不能使用&&,使用的是and

6、标签内与#{}内写的都是POJO属性名,其余是SQL的字段名

7、注意这里我在yml文件配置了MyBatis的自动驼峰命名规范,所以不用使用as重新命名

8、这个1=1是防止后面出现空传值导致SQL语句出现错误

源码解析

下一篇将对源码中各个阶段进行逐步解析:

​MyBatis关键源码解析​-CSDN博客

http://www.xdnf.cn/news/20301.html

相关文章:

  • 计算机网络:以太网中的数据传输
  • golang连接influxdb的orm操作
  • halcon-亚像素边缘提取教程
  • PyTorch 模型文件介绍
  • element-plus 表单校验-表单中包含多子组件表单的校验
  • (数据结构)哈希碰撞:线性探测法 vs 拉链法
  • 基于区块链的IoMT跨医院认证系统:Python实践分析
  • Flink中的事件时间、处理时间和摄入时间
  • Joplin-解决 Node.js 中 “digital envelope routines::unsupported“ 错误
  • 自旋锁/互斥锁 设备树 iic驱动总线 day66 67 68
  • 输入2.2V~16V 最高输出20V2.5A DCDC升压芯片MT3608L
  • 计算机网络:网络设备在OSI七层模型中的工作层次和传输协议
  • 鸿蒙 BLE 蓝牙智能设备固件升级之DFU升级方式(Nordic芯片)
  • macbook intel 打开cursor会闪退
  • MySQL集群高可用架构(MHA高可用架构)
  • Process Explorer进阶(第三章3.3):深入理解进程详情
  • [Windows] AdGuard.v7.21.5089.0 中文直装电脑版
  • cds序列转换为pepperl脚本详细解读及使用
  • Python多线程编程全面指南
  • web自动化测试
  • Elasticsearch优化从入门到精通
  • 线代:排列与逆序
  • 从机器学习的角度实现 excel 中趋势线:揭秘梯度下降过程
  • PageHelper的使用及底层原理
  • WordPress如何绑定多个域名 WordPress实现多域名访问
  • 新的打卡方式
  • GPIO介绍
  • java接口和抽象类有何区别
  • ICPC 2023 Nanjing R L 题 Elevator
  • 用Android studio运行海外极光推送engagelab安卓的SDK打apk安装包