Java工具类 BeanUtils库介绍以及对象拷贝

2年前 (2022) 程序员胖胖胖虎阿
306 0 0

前言介绍:

BeanUtils
工具由
Apache
软件组织编写,提供给我们开发者使用
主要解决的问题是:把对象的属性数据封装到对象中。
我们在开发中经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中读取到的数据都是
String
,但是很显然我们的应用程序中不仅仅有String
一种数据类型,比如:基本数据类型(int、
double

char

float
等),还有自定义数据类型(引用数据类型)
面临的一个问题就是讲字符串类型转换为各种具体的数据类型,该怎么办呢?
有两种方法解决:
1.首先判断需要的数据类型,然后对字符串类型调用相应的方法,将其转换为我们想要的类型

2. 使用BeanUtils工具

上面的两种方法,第一种存在的问题是太过于繁琐,每次都要进行大量的类型转换,
Apache
软件基金会给我们提供了第二种方法,使用其提供的BeanUtils
工具,具体的说只需要知道其中的两个方法就能实现类型的转换,很简单,降低了编程的难度。

使用步骤:

导入jar:
要想使用别人开发的工具必须将其jar
包导入到程序中。
<dependency>
     <groupId>commons-beanutils</groupId>
     <artifactId>commons-beanutils</artifactId>
     <version>1.9.0</version>
</dependency>

主要方法:

 Beanutils工具在使用时几乎只用到以下几个方法.

BeanUtils.setProperty(bean, name, value);

其中bean是指你将要设置的对象,name指的是将要设置的属性(写成属性 名”,value(从配置文件中读取到到的字符串值)

BeanUtils。copyProperties(bean, name, value)

和上面的方法是完全一样的。使用哪个都可以。

ConvertUtils.register(Converter converter , ..)。
当需要将
String
数据转换成引用数据类型(自定义数据类型时),需要使用此方法实现转换。
BeanUtils.populate(bean,Map)
其中
Map
中的
key
必须与目标对象中的属性名相同,否则不能实现拷贝。
BeanUtils.copyProperties(newObject,oldObject),

实现对象的拷贝

具体使用:

 根据业务场景进行对象的拷贝赋值以及拆分等

 public TopicErrMsVO getDetails(Long id) {
        TopicErrMs topicErrMs = this.get(id);
        TopicErrMsVO errMsVO = new TopicErrMsVO();

        BeanUtils.copyProperties(topicErrMs, errMsVO);
        User user = userBiz.get(topicErrMs.getUserId());

        UserVo userVo = new UserVo();

        userVo.setOrgName(orgBiz.get(user.getOrgId()).getName());
        BeanUtils.copyProperties(user, userVo);
        errMsVO.setUserVo(userVo);

        Topic topic = topicBiz.get(topicErrMs.getTopicId());
        TopicVO topicVO = new TopicVO();
        topicVO.setTopicType(TopicTypeEnum.getByCode(topic.getTopicType()).getName());
        topicVO.setSourceName(SourceEnum.getByCode(topic.getSourceName()).getName());
        //单选题
        String topicType = topic.getTopicType().toString();
        if (topicType.equals(ExamConstants.TOPIC_TYPE_2) || topicType.equals(ExamConstants.TOPIC_TYPE_3)) {
            String selectItems = topicSelectBiz.get(topic.getId()).getSelectItems();
            String[] arr = selectItems.split("&");
            topicVO.setSelectItems(arr);
        }
        BeanUtils.copyProperties(topic, topicVO);
        errMsVO.setTopicVO(topicVO);

        return errMsVO;
    }

版权声明:程序员胖胖胖虎阿 发表于 2022年9月13日 上午5:56。
转载请注明:Java工具类 BeanUtils库介绍以及对象拷贝 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...