放弃where 1 = 1,使用更优雅的SQL条件拼接

发布时间 2023-04-15 11:05:58作者: ashet

列表接口,通常会有多个条件组合查询的业务场景。
映射至mapper.xml中就需要写where 1 = 1来拼接否则就会发生 select * from table where and column = 'value'的语法错误
如今的IDEA中,如果你设置了SQL方言,就会警告你where 1 = 1 始终为true


建议使用<where></where>标签来处理这种情况,此标签会只会在它包含的标签中有返回值的情况下才插入 where子句。并且若子句的开头为 and orwhere标签也会将它们去除


以上为实测截图,从右侧控制台执行的SQL语句中,可以发现子句中的首个and已被自动去除,是不是比1 = 1略显优雅呢?