文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL的 where 1=1 会影响性能吗?

2024-11-29 21:56

关注

一、动态拼接SQL

在 Mybatis中,动态拼接 SQL最常用的两种方式:使用 where 1=1 和 使用标签。

1. 使用where 1=1

使用过 iBATIS的小伙伴应该都知道:在 iBATIS中没有标签,动态 SQL的处理相对较为原始和复杂,因此使用where 1=1这种写法的用户很大一部分是还在使用 iBATIS 或者是从 iBATIS过度到 Mybatis。

如下示例,通过where 1=1来动态拼接有效的 if语句:


 SELECT * FROM user 
 WHERE 1=1
    
        AND name = #{name}
    
    
        AND age = #{age }
    

2. 使用标签

Mybatis提供了标签,标签只有在至少一个 if条件有值的情况下才去生成 where子句,若 AND或 OR前没有有效语句,where元素会将它们去除,也就是说,如果 Mybatis通过标签动态生成的语句为where AND name = '111',最终会被优化为where name = '111'。

标签使用示例如下: