查询条件如图所示

多条件查询_sql


因为我们不知道要查询的条件都有哪些,所以难点就在于如何拼装sql语句。

情况1:所有的查询条件都不写,直接点击查询

情况2:查询条件写了一部分

这时候就该我们进行分析了。

一般的sql查询语句为:

select * from book where...

这样写在情况1时,sql语句是错误的。
如果sql语句为这样,

select * from book where 1=1

我们就能继续对查询条件进行判断然后拼装sql。满足了情况1和情况2.
代码如下:

public List<Book> FindProductByManyCondition(String id, String name,
String category, String minprice, String maxprice) {
QueryRunner qr=new QueryRunner(C3P0Util.getDataSource());
StringBuilder sql=new StringBuilder("select * from book where 1 = 1");
List<String> list=new ArrayList<String>();
//拼装sql
if(!"".equals(id)){
sql.append(" and id like ? ");
list.add("%"+id+"%");
}
if(!"".equals(name)){
sql.append(" and name like ?");
list.add("%"+name+"%");
}
if(!"".equals(category)){
sql.append(" and category = ?");
list.add(category);
}
if(!"".equals(minprice)){
sql.append(" and price >= ?");
list.add(minprice);
}
if(!"".equals(maxprice)){
sql.append(" and price <= ?");
list.add(maxprice);
}
try {
List<Book> books=qr.query(sql.toString(),new BeanListHandler<Book>(Book.class), list.toArray());
return books;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

查询结果:

多条件查询_sql查询_02