[Java] 纯文本查看 复制代码
//在js中封装查询条件
req.setCharacterEncoding("utf-8");
Map<String, String[]> parameterMap = req.getParameterMap();
//在DaoImpl类中解析条件
String sql = "select * from tab where 1=1 ";
//用于拼接的StringBuilder
StringBuilder sb = new StringBuilder();
sb.append(sql);
//keyset是条件名称集合
Set<String> keySet = map.keySet();
//list是条件值的集合
List<Object> list= new ArrayList<Object>();
for (String key : keySet) {
//当条件有参数时
String value = map.get(key);
if(value != null && !"".equals(value)){
//拼接查询语句,注意查询条件的类型
sb.append(" and "+key+"=? ");
list.add(value);
} else if ("name".equals(value)) {
//name条件的模糊查询
sb.append(" and "+key+"like ? ");
list.add("%"+value+"%");
}
//为了应对所有条件都没有参数的情况,可以加一个条件
sb.append("and 1 = ?");
list.add(1);
}
//参数的类型是数组
List<Object> query = template.query(sql, new BeanPropertyRowMapper<Object>(Object.class), list.toArray());
return query;