问题:我们在很多时候需要根据条件动态拼装sql语句,如下代码,我们需要查询对应年龄、性别的user
String sql = "";
sql = "SELECT * FROM table WHERE ";
if(sex!=null && sex!="")
sql += "SEX = '"+sex+"' ";
if(age!=0)
sql += "AND AGE = '"+age+"' ";
当sex不为null且不为空的时候不会出错,但是sex如果为空或null而age不为0时,就会出现
xxxx where and xxx的错误sql。
当sex为null或为空且age!=0时,又会出现xxxx where 的错误sql。
这都是我们所不期望的!
所以,一个小技巧可以避免这种尴尬,就是一开始在where后添加1=1
即改为:sql = "SELECT * FROM table WHERE 1=1 ";
完美解决各种问题!