java通过反射将request数据转为实体类数据

这段代码将HttpServletRequest中的参数值填充到指定类的新实例中,基于字段类型进行转换,如int、String、Date等,并处理不存在或为空的参数。
摘要由CSDN通过智能技术生成
  public static Object getRequestConvertBean(HttpServletRequest request, Class<?> beanClass) {
        Object obj = null;
        try {
            //创建一个新的无指向实体反射
            obj = beanClass.newInstance();
            //获取该类的所有字段信息
            Field[] fields = beanClass.getDeclaredFields();
            Class<?> fieldType;
            String fieldName;
            for (Field field : fields) {
                field.setAccessible(true);
                //获取当前循环的字段名称
                fieldName = field.getName();
                if (Modifier.isFinal(field.getModifiers())) {
                    continue;
                }
                //如果再request中不存在就赋值为null
                if (StringUtils.isBlank(request.getParameter(fieldName)) || StringUtils.isEmpty(request.getParameter(fieldName))) {
                    field.set(obj, null);
                    continue;
                }
                //获取当前字段的类型
                fieldType = field.getType();
                //根据当前类型判断强转并通过当前字段名取值并赋值到新的类中
                if (fieldType == int.class || fieldType == Integer.class) {
                    field.set(obj, Integer.valueOf(request.getParameter(fieldName)));
                } else if (fieldType == long.class || fieldType == Long.class) {
                    field.set(obj, Long.valueOf(request.getParameter(fieldName)));
                } else if (fieldType == float.class || fieldType == Float.class) {
                    field.set(obj, Float.valueOf(request.getParameter(fieldName)));
                } else if (fieldType == double.class || fieldType == Double.class) {
                    field.set(obj, Double.valueOf(request.getParameter(fieldName)));
                } else if (fieldType == boolean.class || fieldType == Boolean.class) {
                    field.set(obj, Boolean.valueOf(request.getParameter(fieldName)));
                } else if (fieldType == short.class || fieldType == Short.class) {
                    field.set(obj, Short.valueOf(request.getParameter(fieldName)));
                } else if (fieldType == BigDecimal.class) {
                    field.set(obj, BigDecimal.valueOf(Long.parseLong(request.getParameter(fieldName))));
                } else if (fieldType == Date.class) {
                    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                    field.set(obj, formatter.parse(request.getParameter(fieldName)));
                } else if (fieldType == String.class) {
                    field.set(obj, request.getParameter(fieldName));
                } else {
                    //如果不在常见的基本类型就讲数据赋值为null
                    field.set(obj, null);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值