SSM之MyBatis_02_02_动态sql——if和where的使用

本文详细介绍了MyBatis中动态SQL的使用,特别是If和Where标签的功能。If标签用于根据参数判断拼接SQL,Where标签则会移除首个AND,避免多余的条件。通过示例展示了如何智能地动态设置查询条件,避免无用条件的拼接,提高代码质量。同时强调了一段SQL内只能有一个Where,否则会导致语法错误。
摘要由CSDN通过智能技术生成

系列文章目录

一、mybatis里的动态sql——if和where的使用

什么是动态sql ?
if和where这样的可以写条件判断的sql 就是动态sql
If标签:作为判断入参来使用的,如果符合条件,则把if标签体内的SQL拼接上
Where标签:会去掉条件中的第一个and符号。
注意:用if进行判断是否为空时,不仅要判断null,也要判断空字符串‘’;
先写接口
在这里插入图片描述
接着写“实现类”
我们写一个简单的包含where的模糊查询,看看这样写会有什么问题
在这里插入图片描述
需要注意的是返回值写user或者hashmap都是可以的
在这里插入图片描述

接着调用
在这里插入图片描述
在这里插入图片描述
没有问题,可以查出来,我们看内部的sql语句是自动拼接起来了
但是有时候我们不需要多条件,比如下面的情况
在这里插入图片描述
那么这个时候有没有问题呢?

在这里插入图片描述
像这样写1个或者多个条件,或者1个条件都不写,都不会报错
最多只是查不到数据而已

在这里插入图片描述
我们发现一个很严重的问题,我们明明没有设置这个条件了,为什么还会有
我们能不能动态的设置查询条件呢
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就比较智能了,没有条件就不会去拼接条件
这样才是比较优质的代码
在这里插入图片描述
在这里插入图片描述
开放两个条件,报错了,我们猜测一定是sql语句写错了
在这里插入图片描述
在这里插入图片描述
注意 and 加的 位置
另外需要注意
where 就真的不需要自己加了,因为有where标签,它会自己帮我们加上去

这就是动态sql
If标签:作为判断入参来使用的,如果符合条件,则把if标签体内的SQL拼接上
Where标签:会去掉条件中的第一个and符号

总结

什么是动态sql
If标签:作为判断入参来使用的,如果符合条件,则把if标签体内的SQL拼接上
Where标签:会去掉条件中的第一个and符号

注意

使用了where标签就不能再 使用where了
因为一段sql里面只能有一个where
不会存在 select * user where username=“张三” where sex=“男”;
一定要规范,否则就可能出现上面这种错误,一段sql里面出现两个where,引起语法报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值