一.动态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。
改造后:
再次测试, 都通过。
四.总结