您的位置:首页 > 产品设计 > UI/UE

Sping 中包的方法WebUtils.getParametersStartingWith(request,String);

2015-02-02 14:35 309 查看
在工作中会遇到,页面参数变化提交参数到后台去查询,现在可以不用改后台代码 ,直接改前天的代码就可以实现 WebUtils.getParametersStasrtingWith(request,String)

举个例子,比如页面上有 表单提交:

<input type="text" name="search_name"value="aileen">

<input type="text" name="search_age"value="12">

<input type="text" name=”search_school"value="而我却">

HttpServletRequest request

//得到所有提交字段中search_的字段

filterMap = WebUtils.getParametersStartingWith(request, "search_");

for (String key : filterMap.keySet()){

//去掉一些特殊字符

if (StringUtils.isNotBlank(filterMap.get(key).toString())){

filterMap.put(key, filterMap.get(key).toString().trim().replace("@", "").replace("!", "").replace("?", "").replace("#", "").replace("'", "").replace("=", "").replace("\\", ""));

}

}

就可以得到页面传过来的参数数组,可以拼接sql 查询{还可以在这些数组的后面添加search_channelNo_like 这样的关键字去查询)

这个是Hibernate操作数据库 根据对象中的字段后缀 就可以去创建sql

/**

* 根据map条件创建Criterion[],辅助函数

* @param filterMap

* @return

*/

@SuppressWarnings("unchecked")

public Criterion[] getDefaultCriterion(Map<String, Object> filterMap) {

Object[] c = {};

String propertyType = null;

if (!MapUtils.isEmpty(filterMap)) {

for (Map.Entry<String, Object> entry : filterMap.entrySet()) {

try {

propertyType = BeanUtils.getPropertyType(this.entityClass, entry.getKey()).getName();

} catch (NoSuchFieldException e) {

logger.error("查询信息错误", e);

throw new HibernateException(e.getMessage());

}

if (entry.getValue() instanceof Map) {

Map<String, Object> map = (Map<String, Object>) entry.getValue();

if (map.containsKey("like")) {

if (propertyType.equals("java.lang.String")) {

c = ArrayUtils.add(c, Restrictions.like(entry.getKey(), (String) map.get("like"), MatchMode.ANYWHERE));

} else {

throw new HibernateException("the property type is error");

}

}

if (map.containsKey("in")) {

if (map.get("in") instanceof Object[]) {

c = ArrayUtils.add(c, Restrictions.in(entry.getKey(), (Object[]) map.get("in")));

} else {

throw new HibernateException("the property type is error");

}

}

if (map.containsKey("ge")) {

c = ArrayUtils.add(c, Restrictions.ge(entry.getKey(), map.get("ge")));

}

if (map.containsKey("le")) {

c = ArrayUtils.add(c, Restrictions.le(entry.getKey(), map.get("le")));

}

if (map.containsKey("gt")) {

c = ArrayUtils.add(c, Restrictions.gt(entry.getKey(), map.get("gt")));

}

if (map.containsKey("lt")) {

c = ArrayUtils.add(c, Restrictions.lt(entry.getKey(), map.get("lt")));

}

if (map.containsKey("between")) {

if (map.get("between") instanceof Object[]) {

Object[] s = (Object[]) map.get("between");

if (s[0] == null || s[1] == null) {

throw new HibernateException("between method must be two parameters");

}

c = ArrayUtils.add(c, Restrictions.between(entry.getKey(), s[0], s[1]));

} else {

throw new HibernateException("the property type is error");

}

}

} else {

c = ArrayUtils.add(c, Restrictions.eq(entry.getKey(), entry.getValue()));

}

}

}

Criterion[] result = new Criterion[c.length];

for (int i = 0; i < c.length; i++) {

result[i] = (Criterion) c[i];

}

return result;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐