Mybatis中where标签与if标签怎么结合使用
导读:本文共2510.5字符,通常情况下阅读需要8分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 使用<where>标签select筛选出视图对象的参数,用于给前端返回页面参数使用。 <sqlid="selectFileVo">selectfile_id,uuid,file_name,file_url,status,create_time,update_timefromfile</sql... ...
目录
(为您整理了一些要点),点击可以直达。select筛选出视图对象的参数,用于给前端返回页面参数使用。
以下代码格式是正确,我们先观察下and
或者or
的位置。
再看一下错误的写法;
这时候运行该代码,当beginCreateTime
或endCreateTime
为空时,我们会发现报错SQL执行异常,原因是where多了一个and
。
当<if>
标签判断失败后, <where>
标签关键字可以自动去除掉库表字段赋值前面的and
,不会去掉语句后面的and
关键字,即<where>
标签只会去掉<if>
标签语句中的最开始的and
关键字。所以上面的写法(and
写在后面)是不符合mybatis规范的。
当不使用<where>
标签时,正确的写法可以参考以下代码:
此时我们发现and
是写在前面的,同时增加了1=1
条件。
如果我们去掉1=1
条件,同时去掉第一个<if>
标签的and
。
这种情况下,当fileName
为空时,sql语句中会出现where and
这种错误的语法,最终导致sql执行异常。所以正确的代码中,使用1=1
条件,当fileName
为空时,sql语句就会变成where 1=1
,后面接不接and
都能正确执行。
在不使用<where>
标签的情况下,and
写在后面,在where
条件最后增加1=1
判断,原理和上面一样,这里就不再赘述了。
Mybatis中where标签与if标签怎么结合使用的详细内容,希望对您有所帮助,信息来源于网络。