将HttpServletRequest中的参数反射至实体类

/**
     * 将HttpServletRequest中的参数反射至实体类
     * @param 
     * @param clazz
     * @param request
     * @return
     */
    private  void reflectParameter(T obj, HttpServletRequest request) {
        try {
            //获取对象的Class
            Class clazz = obj.getClass();
            //获取Class中所有已声明的属性集合
            Field[] fileds = clazz.getDeclaredFields();
            //遍历属性结合
            for (Field f : fileds) {
                //过滤被final、static修饰的成员变量
                if ((f.getModifiers() & Modifier.FINAL) > 0
                    || (f.getModifiers() & Modifier.STATIC) > 0) {
                    continue;
                }
                //取消所有私有变量的限制
                f.setAccessible(true);//取消Field的访问检查
                //获取属性的类型,long/int/string....
                Class fieldType = f.getType();
                //获取属性的名字
                String fieldName = f.getName();
                //根据属性的名字从request中获取value
                String paramVal = request.getParameter(fieldName);
                //判断类型,如果是String
                if (String.class == fieldType) {
                    f.set(obj, paramVal);
                //判断类型,如果是long,则使用NumberUtils.toLong,即使为空,也赋默认值0L
                } else if (long.class == fieldType || Long.class == fieldType) {
                    f.set(obj, NumberUtils.toLong(paramVal));
                //判断类型,如果是int,则使用NumberUtils.toInt,即使为空,也赋默认值0
                } else if (int.class == fieldType || Integer.class == fieldType) {
                    f.set(obj, NumberUtils.toInt(paramVal));
                //判断类型,如果是date,则使用DateUtil.parseDateNewFormat格式化日期格式
                } else if (Date.class == fieldType) {
                    f.set(obj, DateUtil.parseDateNewFormat(paramVal));
                }
            }
        } catch (IllegalArgumentException e) {
            LOGGER.error("", e);
        } catch (IllegalAccessException e) {
            LOGGER.error("", e);
        }
    }

你可能感兴趣的:(Java)