sql 语句多个条件查询 的处理

nai598455803 2014-02-26 01:11:39
对于一个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 可不可以实现这样的功能, 有点乱,不知道写明白了没
...全文
1064 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
缘来一场梦 2014-02-26
  • 打赏
  • 举报
回复

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 + "' ");
		}
s041738 2014-02-26
  • 打赏
  • 举报
回复
拿出语句相同的部分,拼接语句可能不同的部分。比如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() { 类似 } 最后执行语句便为你需要的不同条件下的语句
  • 打赏
  • 举报
回复
判断条件,然后用stringbuilder拼接
李四爷 2014-02-26
  • 打赏
  • 举报
回复
在where后面先写个1=1 然后将要查询的条件去判断 如果有的话就拼接上去, 使用一个集合去存放要查询的条件的值
nai598455803 2014-02-26
  • 打赏
  • 举报
回复
怎么个拼接法,可否举例说明一下?
Defonds 2014-02-26
  • 打赏
  • 举报
回复
你可以进行 string 动态拼接啊,然后用 and 连接起来

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧