多条件组合查询
// 条件(criteria) 分别为 cname, gender, cellphone, email
public List<Customer> query(Customer criteria){
try{
// 给出 sql 模板
// 先给出一个 sql 语句的前缀
// WHERE 条件为 1=1, 方便后面增加其他语句, 要注意 sql 语句各个单词之间的空格
StringBuilder sql = new StringBuilder("SELECT * FROM t_customer WHERE 1=1");
// 用来装载参数的 List 集合
// 当判断一个条件存在后, 将该条件放入参数集合中
List<Object> params = new ArrayList<Object>();
// 判断各个条件是否存在
String cname = criteria.getCname();
if(cname != null && !cname.trim().isEmpty()){
// 向 sql 模板中添加参数, 模糊查询
sql.append(" and cname like ?");
// 向 list 集合中添加参数
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().ieEmpty()){
sql.append(" and email like ?");
params.add("%"+email+"%");
}
// 执行 qr 方法
// 注意将 sql 语句转换为 String 类型
// 将 params 转换为数组类型
QueryRunner qr = new QueryRunner();
qr.query(sql.toString(),
new BeanListHandler<Customer>(Customer.class),
params.toArray());
}catch(SQLException e){
throw new RuntimeException(e);
}
}
参考资料: