前端数据的实体类封装 (commons-beanutils)

在前端传入后端数据的时候,有时候,会传过来很多的数据,如果普通的一个一个的写,那么会写很多数据,导致代码冗余,看起来很多很杂,为了让代码优化,我们可以,对代码进行优化,让前端的数据进行一次封装,直接封装成我们所需要的实体类,那么为了用这个方法,我们首先要导入一个外部包,到我们的外部库,commons-beanutils:commons-beanutils(1.9.3),导入之后我们就可以用方法进行封装了

 Map<String, String[]> parameterMap = request.getParameterMap();
// 首先获取前端数据的字典类对象
 User user = new User();
 //建立实体类user
 BeanUtils.populate( user,parameterMap );
 //吧实体类和字典对象放入我们的 BeanUtils的populate方法中,进行封装,底层的原理就是实体类中的set方法

那么前端传过来的数据,都是字符串类型的数据,但是我们的实体类中,不一定都是字符串类型的,如果假设现在我们的日期属性是date类型的,但是前端传进来的是字符串类型的,这个时候如果调用set方法的话,我们的date属性的set方法是date类型的,但是前端传入字符串,调用set方法, 那么一定会报错,因为形参实参类型不同,那么封装一定会失败,这个时候我们有两种方法:
1.改写set方法

public void setBirthday(String birthday) {
		SimpleDateFormat sf=new SimpleDateFormat( "YYYY-MM-dd" );
		 try {
            Date parse = sf.parse(birthday);
           this.birthday =parse;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
    }

2.建Convert,改写属性类型

public class MyConvert implements Converter {
    //完成日期转化
    @Override
    public  Date convert(Class aClass,Object o) {
        String dateStr = String.valueOf( o );
        SimpleDateFormat sf=new SimpleDateFormat( "YYYY-MM-dd" );
        try {
            Date parse = sf.parse( dateStr );
            return parse;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}
//改写完后,在封装实体类之前,先使用我们这个方法,去进行日期的转换
 ConvertUtils.register(new MyConvert(), Date.class );  //参数1转换器接口,参数2最终需要的class文件
 BeanUtils.populate( user,parameterMap );

以上两种方法,都可以让前端的数据进行实体类的封装,并且让数据可以进行转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值