提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、这个工具是干哈的,场景在哪?
首先这个玩意呢是我们Spring的一个工具类,它拥有很多工具方法,用的多的就是这个copyProperties()方法。
它就很好用噢,比如我们有两个javaBean,而这两个Bean还特像,里面的属性基本一致,而我们要将第一个Bean转换为第二个Bean,我们业务要用到第二个Bean。这个时候我们一般就实列出第二个Bean出来,然后就set()和get()进行一个个属性赋值。这就很麻烦,代码也非常冗余。这个时候就可以用到我们今天的主角了噢。
二、BeanUtils.copyProperties()使用?
BeanUtils.copyProperties("转换前的类", "转换后的类");
非常棒!就一行解决上面的javaBean之间转换的问题了。
如下就是在项目中来着Service层接口的使用场景:
/**
* @Author: 胡浩
* @Description: 发表评论
* @Param commentDto
* @return AjaxResponse
**/
@Override
public boolean publishComment(CommentDto commentDto) {
//创建实列
CommentEntity commentEntity = new CommentEntity();
//BeanUtils.copyProperties("转换前的类", "转换后的类");
BeanTools.copyProperties(commentDto,commentEntity);
//给定创建时间
commentEntity.setCreateTime(new Date());
commentEntity.setUpdateTime(new Date());
//新增数据
int num = commentEntityMapper.insert(commentEntity);
//返回
return num == 1 ? true : false;
}
三、使用注意事项(六点)
BeanUtils.copyProperties(x, y);
1、y中的存在的属性,x中一定要有,但是x中可以有多余的属性。
2、x、 y中的属性要名字相同,才能被赋值。
3、Spring的BeanUtils的CopyProperties方法需要对应的属性拥有getter和setter方法。
4、x中与y中相同的属性都会被替换,不管原先是否有值。
5、spring和apache的copy属性的方法源和目的参数的位置正好相反,所以导包和调用的时候都要注意一下。
6、如果存在属性完全相同的内部类,但是不是同一个内部类,即分别属于各自的内部类,则spring会认为属性不同,不会copy。
总结
这个工具类还是很好用的哦,嘎嘎香。最后,一坨优美的奥利给收尾!