文章转载自“开发者圆桌”一个关于开发者入门,进阶,踩坑的微信公众号
StringBuffer缓冲=new StringBuffer ();
buffer.append (sql);
如果(null !=名字,,!”“.equals(名字)){
缓冲区。追加(“和名称=" +名字);
}
如果(零!=年龄,,!”“.equals(年龄)){
缓冲区。追加(“和年龄=" +年龄);
}
如果(零!=电话,,!”“.equals(手机)){
缓冲区。追加(“和电话像% +电话+“%”);
}
如果不写1=1呢,那么在每一个不为空的查询条件面前,都必须判断有没有在子句,然后在第一个出现的地方加上。
当然,一般情况下是多表关联查询,如果SQL中已经出现过,子句,那么就没必要添加1=1了,例如:
如果你正在使用Hibernate, Mybatis等ORM框架的话,这样的问题不需要担心,这些ORM框架都进行了良好的处理。下面是Mybatis的一个配置样例:
& lt;选择id=" findContact " parameterType=暗赝肌眗esultMap=癈ontactResult”比;
从表1选择*
& lt; where>
& lt;如果测试=" cusId !=null和cusId !='”比;
和cusId=# {cusId}
& lt;/if>
& lt;/where>
& lt;/select>
<强>表拷贝强>
<强>
强>
所谓表的拷贝就是以一个表为源表,拷贝出一个数据和结构都一样的表,以甲骨文为例,其他数据库语法自行参考,基本上大同小异。
拷贝表(1=1永为真的,拷贝表结构和数据)
创建,table_name,为,选择,*,从,source_table,在那里,1=1;
复制表结构(1 & lt;在1永为假,不拷贝数据,仅复制表结构)
创建,table_name,为,选择,*,从,source_table,在1 & lt;在1;
有很多技术书籍,并没有使用,1=1而是采用比较复杂的判断逻辑,从这一点也可以看出书本知识与实践的不同,在实践中,开发者会不断使用省事省力的方法,而不是拘泥于书本。
1=1可能还有其他方面的应用案例,大家不妨留言告知,精选出来,让更多人学会使用1=1这个小的技巧。