一.动态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。
改造后:

再次测试,
都通过。
四.总结
