Spring:BeanUtils.copyProperties()工具使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、这个工具是干哈的,场景在哪?

        首先这个玩意呢是我们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。


总结

        这个工具类还是很好用的哦,嘎嘎香。最后,一坨优美的奥利给收尾!

猜你喜欢

转载自blog.csdn.net/weixin_52797441/article/details/127875403