版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaocxks/article/details/52703714
当要构造动态sql语句时
为了防止sql语句结构不当,所以加上where 1=1
如果不加where 1=1
StringBuilder sql=new StringBuilder("select * from a where");
if(条件)
sql.append(String.format(“a.value='%s' ”,a_value));
使用上述方法拼接sql,如果条件不满足那剩下的sql为select * from a where,会报错
但是按照如下方法,
StringBuilder sql=new StringBuilder("select * from a where 1=1");
if(条件)
sql.append(String.format(“and a.value='%s' ”,a_value));
即使条件不满足
where 1=1是永真条件
所以就是select * from a,就会返回表a中所有数据
还有一种永假条件where 1=0或者where 1<>1
有时候可能并不想获得数据,只想知道该表的结构
就会返回所有列,但是没有记录(行)