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 + "' ");
}