多条件查询的sql语句写法如下:
select * from T_demo where 1=1
and name='张三'
and age='15'
and sex='男'
在dao(数据层)包中写法如下:
public List<Product> findByCondition(String id,String name,String category,String min,String max) throws SQLException{
QueryRunner qr = new QueryRunner(c3p0.ds);
// 用于放置参数集合
List<Object> param = new ArrayList<Object>();
String sql = "select * from products where 1=1";
if (id!=null && id.trim().length()>0) {
sql += "and id = ?";
param.add(id);
}
if (name!=null && name.trim().length()>0) {
sql += "and name = ?";
param.add(name);
}
if (category!=null && category.trim().length()>0) {
sql += "and category = ?";
param.add(category);
}
if (min != null && max != null && min.trim().length()>0 && max.trim().length()>0) {
sql += "and price >= ? and price <= ?";
param.add(min);
param.add(max);
}
// 用于存放查询出数据的集合
List<Product> list = qr.query(sql, new BeanListHandler<Product>(Product.class),param);
return list;
}