日期:2014-05-17 浏览次数:20667 次
StringBuffer sb = new StringBuffer("select * from tableName where 1>0"); if(null!=id){ sb.append(" and id='"+id+"'"); } if(null!=name){ sb.append(" and name='"+name+"'") }
------解决方案--------------------
在查询前构建查询的字符串,可以专门定义一个类。比如你有很多查询条件,假设是jsp页面,在jsp页面里面把要查询的类型(int String 默认),其它类型均转化为String类型进行传递;在自定义的类里面用if判断是否为空,如果不为空得到值用%like,如果为空要判断一下,是不查询这个条件,还是默认查询,这根据实际情况。而对于int之类的数值类型,可以用javascript在jsp设置默认值来处理不输入int值的情况。然后根据if条件构建一个字符串str,然后传入专门的查询方法里面,可以用1=1 + str 的方式。----这是基本的作法,希望对你有所帮助。
------解决方案--------------------
动态组织SQL语句
如果Id不为空,则sql语句中加上id的查询条件
如果用户名不为空,则sql语句中加用户名的查询条件
String sql = "select * from user "
StringBuilder sb = new StringBuilder(" where 1=1 ");
if (null != id) {
sb.append(" and id=查询的值");
}
if (null != 用户名) {
sb.append(" and 用户名=查询的值");
}
------解决方案--------------------
我的笨办法是:
假如传来的值如下:
text1 text2 ······ String sql="select * from 表名 where 1=1 "; String s1=""; String s2=""; ········ if(text1!=null) { s1="and 字段1='"+text1+"'"; } if(text2!=null) { s2="and 字段2='"+text2+"'"; } ········· sql=sql+s1+s2+········;