if多条件的矛盾
如果要进行多条件判断,就会写成这样:
这么写的问题是:当没有name参数,却有price参数的时候,执行的sql语句就会是:
select * from product_ and price > 10.
这样执行就会报错
显然以上语句会出现 SQL 语法异常,但加入“1=1”这样的条件又非常奇怪,所以 MyBatis 提供了 where 标签。
所以在测试代码里
Map<String,Object> params = new HashMap<>();
//params.put("name","a");
params.put("price","10");
这个参数map,无论是否提供值否都可以正常执行
where 标签主要用来简化 SQL 语句中的条件判断,可以自动处理 AND/OR 条件,语法如下。
if 语句中判断条件为 true 时,where 关键字才会加入到组装的 SQL 里面,否则就不加入。where 会检索语句,它会将 where 后的第一个 SQL 条件语句的 AND 或者 OR 关键词去掉。