优化代码时发现同事在使用mybatis的坑:当sql语句中where条件都是用的if判断拼接时,where 后面用1=1 作为条件
直接上案例:
错误写法❎:
UPDATE Table_xxx
set Count=Count + 1
where 1=1
<if test="Id>0">
and Id = #{Id}
</if>
<if test="text !=null">
and Text = #{text}
</if>
分析错误原因:当下面两个if条件都不满足时,会出现该表内所有数据都执行count+1,故where 1=1 这种写法不可取
正确案例✅:
UPDATE Table_xxx
set Count=Count + 1
<where>
<if test="Id>0">
and Id = #{Id}
</if>
<if test="text !=null">
and Text = #{text}
</if>
</where>