日期:2014-05-17  浏览次数:20672 次

sql 语句多个条件查询 的处理
对于一个sql 语句, 比如说select *  from users where id=1  username ='aaa'  password = 'ccc';
输入的条件可能是id,username,password 中的一个或者多个,如果一个条件select *  from users where id=1,如果2个,select *  from users where id=1 and  username ='aaa' ,甚至3个,这里需要做一个非空的判断,情况可能会有好几种,不知道一条sql 可不可以实现这样的功能, 有点乱,不知道写明白了没
------解决方案--------------------
你可以进行 string 动态拼接啊,然后用 and 连接起来
------解决方案--------------------
在where后面先写个1=1   然后将要查询的条件去判断  如果有的话就拼接上去,  使用一个集合去存放要查询的条件的值
------解决方案--------------------
判断条件,然后用stringbuilder拼接
------解决方案--------------------
拿出语句相同的部分,拼接语句可能不同的部分。比如StringBuffer sb = new StringBuffer();
sb.append('select *  from users where '); 那么接下来用几个判断
 if(id!=null){ 
 sb.append(' id='+id+'); 
 String sql=sb.toString();
 执行语句为sql
 }
 else if(id!=null && username!=null) {
 sb.append(' id='+id+' username='+username);
String sql=sb.toString();
 执行语句为sql
 }  
 else if() {
 类似
 } 
最后执行语句便为你需要的不同条件下的语句
------解决方案--------------------

StringBuffer sb = new StringBuffer();
        sb.append(" select *  from users where 1=1 );
        if (id != null && !"".equals(id)) {
sb.append(" and id='" + id + "' ");

        if (username != null && !"".equals(username)) {
         sb.append(" and username='" + username + "' ");

        if (password != null && !"".equals(password)) {
         sb.append(" and password='" + password + "' ");
}