Hutool工具包中BeanUtil的使用

统一声明这里使用得是hutool的BeanUtil,然后在这里主要简单描述了常用的4组API,当然大家可以根据自己的需要去了解对应的方法。

大家可以在pom.xml文件中加入下列语句,即可自动引入相关的jar包。

<!--hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.17</version>
        </dependency>

T

1、将对象转成map集合,并且在转成map集合的时候可以针对字段转换字段的属性。

beanToMap

可能遇到的问题:使用BeanUtil做beanToMap时,转换字段(可能为null)的属性为String类型。如果不做null判断会出现空指针的错误预警。
大家在这里如果想探究一下原因的话,大家可以参考这一篇博客。
https://blog.csdn.net/Qmilumilu/article/details/124476155

Student one = new Student(4,"张三",null,190);
 Map<String, Object> userMap = BeanUtil.beanToMap(one,new HashMap<>(),
                CopyOptions.create().setIgnoreNullValue(true)
                        .setFieldValueEditor((fieldName, fieldValue)->{
                            if(fieldValue == null){
                                fieldValue = "0";
                            }else {
                                fieldValue = fieldValue + "";
                            }
                            return fieldValue;
                        }));

2、将map集合转换成对象: mapToBean

   @Test
    /**
     * 将集合转成对象
     */
    void testMapToBean(){
        Map<String,Object> map = new HashMap<>();
        map.put("id",4);
        map.put("name","张三");
        map.put("age",null);
        map.put("salary",180);
        Student student = BeanUtil.mapToBean(map, Student.class, true, new CopyOptions());
        System.out.println(student);
    }

3、复制对象:copyProperties

在这里大家要注意你所采用的赋值属性的有没有返回值和其中的参数不同,注意查看你传递的是class属性还是新建一个对象。(如果你实体类中有含参数的构造方法,不要忘记了在实体类中的参数为空的构造方法。)

  @Test
    /**
     * 复制对象
     */

    void copyBean(){
        Student two = new Student(4,"李四",18,180);
        CopyOptions copyOptions = new CopyOptions();
        StudentDTO studentDTO = new StudentDTO();
        copyOptions.setIgnoreProperties("id","name");
        BeanUtil.copyProperties(two,studentDTO,copyOptions);
        System.out.println(studentDTO);
    }

在这里插入图片描述

4、填充Bean对象:fillBeanWithMap

类似于更新操作,填充值相当于更新值

    @Test
    /**
     * 填充对象
     */
    void fillBean(){
        Student two = new Student(4,"李四",18,180);
        Map<String,Object> map = new HashMap<>();
        map.put("id",5);
        map.put("name","张三");
        map.put("age",null);
        //map.put("salary",194);
        Student student = BeanUtil.fillBeanWithMap(map, two, true);
        System.out.println(student);
    }

在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用hutool工具包解析XML可以使用XmlUtil类提供的方法来实现。在官网方法,可以通过调用`XmlUtil.readXML(xmlFile)`方法来读取XML文件并返回一个Document对象。然后使用`XmlUtil.getByXPath("//returnsms/message", docResult, XPathConstants.STRING)`方法通过XPath来获取指定节点的值。 另外一个方法是使用`XmlUtil.xmlToMap(xml, result1)`将XML字符串转换为Map对象,然后通过BeanUtil来转换Map对象为具体的Java对象,从而实现对XML的解析。通过调用`BeanUtil.beanToMap(stringObjectMap.get("root"))`可以获取根节点的Map对象,然后通过`BeanUtil.beanToMap(root.get("contents"))`获取内容节点的Map对象。如果内容节点的data字段不是一个列表,可以直接通过`BeanUtil.beanToMap(contents.get("data"))`获取data字段的Map对象。如果data字段是一个列表,可以使用ListUtil和Stream API来进行转换和处理,如`ListUtil.toList(contents.get("data")).stream().map(BeanUtil::beanToMap).collect(Collectors.toList())`。 总结起来,利用hutool工具包解析XML可以使用XmlUtil类提供的方法,并结合BeanUtil、ListUtil和Stream API来完成解析和转换的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [hutool处理xml的方法](https://blog.csdn.net/weixin_41427294/article/details/131572998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架](https://download.csdn.net/download/m0_53659738/88275704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值