sql条件查询java实现
public List<Product> searchByCondition(Condition condition) throws SQLException {
QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
String sql = "select * from product where 1 ";
List<String> paramList = new ArrayList<String>();
if(condition.getPname() != null && !condition.getPname().trim().equals("")){
sql += " and pname like ? ";
paramList.add("%" + condition.getPname().trim() + "%");
}
if(condition.getCid() != null && !condition.getCid().trim().equals("")){
sql += " and cid=? ";
paramList.add(condition.getCid().trim());
}
if(condition.getIs_hot() != null && !condition.getIs_hot().equals("")){
sql += " and is_hot =? ";
paramList.add(condition.getIs_hot().trim());
}
List<Product> productList = queryRunner.query(sql, new BeanListHandler<Product>(Product.class),paramList.toArray());
return productList;
}
注意:
- 此处在where后面加一个1,就可以省去判断第一个加入的条件,即判断是否需要and,这样可以都加上and。
- 利用一个集合来存储不为空的条件,最后查询时,将该List集合转化为array数组。