BeanUtil笔记

本文详细介绍了BeanUtils工具类的功能和使用方法,包括如何利用BeanUtils进行JavaBean的数据封装,以及其提供的setProperty、getProperty和populate等核心方法。适用于Java开发者理解和运用BeanUtils提升开发效率。

BeanUtils工具类,简化数据封装

	* 用于封装JavaBean的
	1. JavaBean:标准的Java类
		1. 要求:
			1. 类必须被public修饰
			2. 必须提供空参的构造器
			3. 成员变量必须使用private修饰
			4. 提供公共setter和getter方法
		2. 功能:封装数据
	2. 概念:
		成员变量:
		属性:setter和getter方法截取后的产物
			例如:getUsername() --> Username--> username
	3. 方法:
		1. setProperty()
		2. getProperty()
		3. populate(Object obj , Map map):将map集合的键值对信息,封装到对应的JavaBean对象中
`BeanUtil` 是 Java 开发中常用的工具类之一,主要用于**操作 Java Bean 对象**,例如: - 属性拷贝(copy properties) - 获取/设置属性值 - 将 Map 转换为 Bean - 将 Bean 转换为 Map 不同的框架或工具库中都有自己的 `BeanUtil` 实现,比如: - `org.springframework.beans.BeanUtils`(Spring 框架) - `org.apache.commons.beanutils.BeanUtils`(Apache Commons BeanUtils) - `cn.hutool.core.bean.BeanUtil`(Hutool 工具库) 下面以 **Hutool 的 `BeanUtil`** 为例,给出常用功能的使用方式和示例。 --- ## ✅ 示例:使用 Hutool 的 `BeanUtil` ### 1. 添加依赖(Maven) ```xml <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.22</version> </dependency> ``` --- ### 2. Java Bean 示例类 ```java public class User { private String name; private int age; // Getter / Setter public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{name='" + name + "', age=" + age + "}"; } } ``` --- ## 🔧 常用功能与代码示例 ### ✅ 1. Map → Bean 转换 ```java Map<String, Object> map = new HashMap<>(); map.put("name", "Alice"); map.put("age", 25); User user = new User(); BeanUtil.fillBeanWithMap(map, user, false); System.out.println(user); // 输出: User{name='Alice', age=25} ``` --- ### ✅ 2. Bean → Map 转换 ```java User user = new User(); user.setName("Bob"); user.setAge(30); Map<String, Object> map = BeanUtil.beanToMap(user); System.out.println(map); // 输出: {name=Bob, age=30} ``` --- ### ✅ 3. Bean 属性拷贝(复制到另一个 Bean) ```java User source = new User(); source.setName("Charlie"); source.setAge(28); User target = new User(); BeanUtil.copyProperties(target, source); // 注意参数顺序:目标在前 System.out.println(target); // 输出: User{name='Charlie', age=28} ``` --- ### ✅ 4. 获取/设置 Bean 属性值 ```java User user = new User(); BeanUtil.setFieldValue(user, "name", "David"); BeanUtil.setFieldValue(user, "age", 40); Object name = BeanUtil.getFieldValue(user, "name"); Object age = BeanUtil.getFieldValue(user, "age"); System.out.println("name = " + name); // 输出: name = David System.out.println("age = " + age); // 输出: age = 40 ``` --- ## 📌 不同框架中的 `BeanUtil` 对比 | 工具类 | 所属框架 | 特点 | |--------|-----------|------| | `BeanUtil` (Hutool) | [Hutool](https://hutool.cn/) | 简洁、功能丰富、易用,推荐 | | `BeanUtils` (Apache Commons) | Apache Commons | 功能多,但性能较低,异常处理麻烦 | | `BeanUtils` (Spring) | Spring Framework | 适用于 Spring 项目,速度快,但不支持 Map ↔ Bean | | `Dozer / MapStruct` | 第三方映射工具 | 用于复杂对象映射,适合 DTO ↔ Entity 转换 | --- ## ✅ 使用建议 - 如果你在使用 **Spring Boot**,优先使用 `org.springframework.beans.BeanUtils.copyProperties()`。 - 如果你在使用 **Hutool**,推荐使用 `cn.hutool.core.bean.BeanUtil`。 - 如果你项目中使用了 **MapStruct**,可以使用注解方式实现高性能 Bean 映射。 --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值