java中两个不同泛型的List进行转换

背景:

数据库查询对象,与接口返回对象不是同一个类型,但字段名称大部分相同,切字段个数较多,如果转换对象时每个字段都通过set、get方法进行赋值代码行数太多,不美观。

实现:

使用BeanUtils.copyProperties()可以进行对象的自动映射,但不可以操作数组集合,所以可以使用循环遍历集合来进行转换

ArrayList<QueryResult> queryResults = null; // 数据库查询结果
ArrayList<ResponseVO> responseVOS = new ArrayList<ResponseVO>();
for (QueryResult queryResult : queryResults) {
    ResponseVO responseVO = new ResponseVO();
    BeanUtils.copyProperties(queryResult,responseVO); // 循环进行转换
    responseVO.setA(querResult.getA()+".00") // 需要特殊处理的字段可以再次赋值
    responseVOS.add(responseVO);
}
return responseVOS; // 响应数据

可以看到代码中有new 还有for,看起来有点low,可以使用stream优化

ArrayList<QueryResult> queryResults = null; // 数据库查询结果
ArrayList<ResponseVO> responseVOS = queryResults..stream().map(m -> {
    ResponseVO queryResult = new ResponseVO();
    BeanUtils.copyProperties(m, queryResult);
    queryResult.setA(m.getA+".00");
    return queryResult; // 需要特殊处理的字段可以再次赋值
}).filter(t ->t.getRunId() != null).collect(Collectors.toList());
return responseVOS; // 响应数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值