1.在使用mybatis的动态sql时,有时候遇到根据条件判断添加where后面的筛选条件的情况,会出现多余的AND或者OR:
1589443907.jpg
2.使用where关键字:
2.1 当第一个参数为空时,拼接后的sql为:select * from td where and phone = .......;
2.2 当所有的参数都为空时,拼接后的sql为:select * from td where .....,显然这样的sql不是完整的sql,执行时会报错.
3.使用where标签时:
3.1 当第一个参数为空时,拼接后的sql为:select * from td where phone=......(若语句的开头为AND或者OR时,where元素会将他们去除).
3.2 当所有的参数都为空时,拼接后的sql为:select * from td.(where元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句)。