@cndenis 你说的这个风格即使在文档里也只是处理并发情况的 option ,--- This issue can be solved with locks or by using the EAFP approach. 作为一个合格的开发者,访问并发资源需要加锁才更是合理的做法吧。 上面的提到的场景,普通的查询不存在明明是一个业务分支直接 if 处理就可以了,异常才需要进行捕获
如果没有这个 1=1, 那就变成 `WHERE AND a = #{a}`. 无法通过 MySQL 的解释器.
Karte
224 天前
这种不需要优化, 解释器会直接删掉这个条件, 因为怎么都是 TRUE.
如果你看的不爽, 可以这样改
```xml
SELECT * FROM <table> WHERE
<where> <if test="a != 0" > AND a = #{a} </if> </where>
```
参考 [MyBatis XML 文档]( https://mybatis.org/mybatis-3/dynamic-sql.html#trim-where-set) > The where element knows to only insert “WHERE” if there is any content returned by the containing tags. Furthermore, if that content begins with “AND” or “OR”, it knows to strip it off.