SQL 多条件组合查询(模糊查询)

前提设定:

 假如现在有一个提交表单,里面是N个查询的条件,用户可以只填写其中的几个条件来进行查询。(也可以不填写条件)

 

解决思想:

       

 

              判断用户填入的条件参数不为null以及除去空格不为空,满足该条件后,使用sql语句拼凑。

解决:

 

                 首先给出sql 语句前半句:

StringBuilder sql = new StringBuilder("select * from t_customer where 1=1");

                后面的 where 1=1  是一个始终成立的条件,是为了防止用户一个条件也没有填,那么就是查询所有,即使只有sql语句的前半段,也不会出现问题!

                再给出sql语句的后半段(后半段的存在就说明了用户填写了1~N个条件)

我们只需将这些条件拼凑起来即可!

 

代码示意:

public List<Customer> topQuery(Customer criteria) {
		try {
			
			/*
			 * 1. 给出一个sql语句前半部
			 */
			StringBuilder sql = new StringBuilder("select * from t_customer where 1=1");
			/*
			 * 2. 判断条件,完成向sql中追加where子句
			 */
			/*
			 * 3. 创建一个ArrayList,用来装载参数值
			 */
			List<Object> params = new ArrayList<Object>();
			String cname = criteria.getCname();
			if(cname != null && !cname.trim().isEmpty()) {
				sql.append(" and cname like ?");
				params.add("%" + cname + "%");
			}
			
			String gender = criteria.getGender();
			if(gender != null && !gender.trim().isEmpty()) {
				sql.append(" and gender=?");
				params.add(gender);
			}
			
			String cellphone = criteria.getCellphone();
			if(cellphone != null && !cellphone.trim().isEmpty()) {
				sql.append(" and cellphone like ?");
				params.add("%" + cellphone + "%");
			}
			
			String email = criteria.getEmail();
			if(email != null && !email.trim().isEmpty()) {
				sql.append(" and email like ?");
				params.add("%" + email + "%");
			}
			
			/*
			 * 三、执行query
			 */
			return qr.query(sql.toString(), 
					new BeanListHandler<Customer>(Customer.class), 
					params.toArray());
		} catch(SQLException e) {
			throw new RuntimeException(e);
		}

 

  • 15
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值