List的copy方法
实体类包含完整的信息,如果只需要返回部分信息会用到
List<EbookResp> respList = new ArrayList<>(); for (Ebook ebook : ebookList) { EbookResp ebookResp = new EbookResp(); BeanUtils.copyProperties(ebook, ebookResp); respList.add(ebookResp); }
1、实体类列表的循环写法
for (Ebook ebook : ebookList) {}
2、将ebook的内容按需copy到ebookResp里
BeanUtils.copyProperties(ebook, ebookResp);
进阶用法,封装成两个方法,一个用来copy单体map一个用来copy列表map
/** * 单体复制 */ public static <T> T copy(Object source, Class<T> clazz) { if (source == null) { return null; } T obj = null; try { obj = clazz.newInstance(); } catch (Exception e) { e.printStackTrace(); return null; } BeanUtils.copyProperties(source, obj); return obj; } /** * 列表复制 */ public static <T> List<T> copyList(List source, Class<T> clazz) { List<T> target = new ArrayList<>(); if (!CollectionUtils.isEmpty(source)){ for (Object c: source) { T obj = copy(c, clazz); target.add(obj); } } return target; }
单体copy方式:
EbookResp ebookResp = CopyUtil.copy(ebook, EbookResp.class);
列表copy方式:
List<EbookResp> list = CopyUtil.copyList(ebookList, EbookResp.class);