系列文章目录
一、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,引起语法报错