01 引言
在日常的开发中,有没有遇到过,在动态SQL中出现WHERE 1 = 1
这样的代码块,有没有感觉看到后一头雾水,写这个玩意要干啥,没有实际的业务意义。
或许只是为了解决动态SQL条件中,WHERE
后面AND
或者 OR
多余的问题吧。
02 案例
2.1 情有可原案发现场
SELECT
count(1)
FROM tb_voucher.voucher_release r
WHERE 1=1
<if test="voucherId != null">
AND r.voucher_id=#{voucherId}
</if>
上面这种这种情况就是为了解决WHERE
后面多余的AND
或者 OR
。
如果没有1 = 1
,当voucherId != null
条件返回true
时,最终的SQL就会出现语法错误的问题,如下:
SELECT
count(1)
FROM tb_v