8、制作CopyUtil封装BeanUtils
第一步:新建 util 包,创建 CopyUtil 类
package com.zibo.wiki.util;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class CopyUtil {
public static <T> T copy(Object source, Class<T> clazz) {
if (source == null) {
return null;
}
T obj;
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;
}
}
第二步:修改 EBookService
package com.zibo.wiki.serivce;
import com.zibo.wiki.domain.Ebook;
import com.zibo.wiki.domain.EbookExample;
import com.zibo.wiki.mapper.EbookMapper;
import com.zibo.wiki.req.EbookReq;
import com.zibo.wiki.resp.EbookResp;
import com.zibo.wiki.util.CopyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EBookService {
@Autowired
private EbookMapper ebookMapper;
public List<EbookResp> list(EbookReq req){
EbookExample ebookExample = new EbookExample();
EbookExample.Criteria criteria = ebookExample.createCriteria();
criteria.andNameLike("%" + req.getName() + "%");
List<Ebook> ebookList = ebookMapper.selectByExample(ebookExample);
return CopyUtil.copyList(ebookList, EbookResp.class);
}
}
第三步:运行测试
![image-20210718225829280](https://i-blog.csdnimg.cn/blog_migrate/4c69e388a2b92df07315cc6377c524c9.png)