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

Mybatis-15.动态SQL-if

一.动态SQL 

 比如只想查询名字中带‘张’的,其他的都不进行条件筛查

会发现什么也查询不出来 

我们希望SQL语句能够根据我们所输入的查询值进行动态的变化,就需要使用到动态SQL。动态SQL中有很多标签,其中用于条件判断的就是标签<if>。

二.<if>标签

如果"name"字段等于null,那么就不执行name字段的判断,以此类推。

改造后的代码如上所示。

再次运行查询代码,发现没有报错,可以查出来。

继续查询,也没有问题。 

执行这条查询语句,发现报错! 

报错SQL语法错误,在‘and’附近。

查看SQL语句,发现当name为null时,会多一个and。

那and可以删除吗?答案是不可以,因为如果name不等于null,gender也不等于null,那么没有and连接SQL语句同样错误。 

那怎么解决呢?

三.<where>标签

<where>标签的作用:

1.动态生成where关键字,如果条件都不成立,不会生成where关键字。如果条件成立,生成where关键字。

2.自动去除条件前面多余的and或者or。

改造后:

再次测试, 都通过。

四.总结


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

相关文章:

  • 新型大数据架构之湖仓一体(Lakehouse)架构特性说明——Lakehouse 架构(一)
  • 202-01-06 Unity 使用 Tip1 —— UnityHub 模块卸载重装
  • 04-spring-理-ApplicationContext的实现
  • pip error: microsoft visual c++ 14.0 or greater is required
  • 软件工程期末复习(一)
  • 2023最新版IDEA创建一个SpringBoot项目 (详细教程)
  • 【Hadoop之hdfs】hdfs一些简单明了的总结(一篇足以,字少但都是精华)
  • pytest 单元框架里,前置条件
  • MySQL数据集成至金蝶云星空的解决方案
  • 【Fastjson反序列化漏洞:深入了解与防范】
  • 类加载机制123
  • HTML入门教程9:HTML引用
  • java 大集合切分成一个集合中有多个小集合
  • Java程序设计基础 第十七章:反射和设计模式
  • 大话PM | 从项目管理软件看项目管理的三个原则两个思维两个工具
  • 深入 Prometheus 监控生态 - 第五篇:利用 API 信息进行监控(NAS 备份任务监控 + 解决思路)
  • 【约束优化】一次搞定拉格朗日,对偶问题,弱对偶定理,Slater条件和KKT条件
  • 画思维导图的app有哪些?5个软件让你轻松画思维导图不求人
  • PostgreSQL 不同模式之间的数据迁移
  • Python小游戏18——中国象棋
  • 安卓13 连接usb设备后不更新ui
  • Android 应用权限管理详解
  • 【Linux】线程锁同步互斥生产消费模型
  • Windows: 如何实现CLIPTokenizer.from_pretrained`本地加载`stable-diffusion-2-1-base`
  • 网络爬虫的基本原理是什么?
  • 初始Docker