where 1=1&&where 1=0

以下示例为ibatis文件。
–简介:iBatis 是一个开源的对象关系映射程序,着重于 POJO 与 SQL 之间的映射关系。使用时,开发者提供一个被称为 SQL 映射的 XML 文件,定义程序对象与 SQL 语句间的映射关系, iBatis 会根据 SQL 映射文件的定义,运行时自动完成 SQL 调用参数的绑定以及 JDBC ResultSet 到 Java POJO 之间的转换。
参考:扩展 iBatis 以透明支持多种数据库

<select id=”***” resultClass=”int”>
SELECT count(*) FROM template WHERE 1=1
<isNotEmpty property=”XXX”>AND name LIKE concat(‘%’, #search#, ‘%’)</isNotEmpty>
</select>
多条件查找情况下,相当于检查where子句中部分查询关键字是否为空集。
若不为空,则将它拼装进SQL语句;若为空,则相当于where子句中不含有任何字段和关键字的判断,条件永真,返回表中所有数据。这样的好处是能够保证动态SQL语句的正确执行。例如若上述语句中name LIKE concat(‘%’, #search#, ‘%’)没有匹配到任何元组,则相当于执行语句SELECT count(*) FROM template WHERE 1=1。
DELETE和UPDATE一般不允许使用该方法。

<delete id=”*****” parameterClass=”java.util.List”>
DELETE FROM mi_alarm_rule_custom WHERE 1 = 0
<iterate>OR alarm_rule_id = #value[]#</iterate>
</delete>

对应于OR就是where 1=0,这个条件始终为false,想想就能想明白的。
对于select操作,结果不会返回任何数据,只有表结构,可用于快速建表。

Leave a Reply

Your email address will not be published. Required fields are marked *