Commons BeanUtils

本文详细介绍Apache公司的BeanUtils工具包,包括其POM依赖配置、常用API及如何使用BeanUtils和ConvertUtils进行数据封装与类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作。


  • POM依赖
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
	<groupId>commons-beanutils</groupId>
	<artifactId>commons-beanutils</artifactId>
	<version>1.9.3</version>
</dependency>
  • 间接依赖jar包


package com.yuyin.beanUtils;

import java.lang.reflect.InvocationTargetException;
import java.util.Date;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

public class BeanTool {
	public static void main(String[] args) {
		register(null);
	}
	
	public static void register(Admin admin) {
		try {
			//?是通配符,cal表示可以指向任意Class类型对象
			Class<?> cal = Class.forName("com.yuyin.beanUtils.Admin");
			//Class<Integer> cla与Class<?> cl
			//前一个表示cla只能指向Integer这种类型,而后一个cl表示可以指向任意类型。
			//cla = Integer.class 可以,但cla = Double.class就不可以。
			//但是cl = Integer.class 可以,cl = Double.class也可以 。
			admin = (Admin) cal.newInstance();
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		if (admin != null) {
			try {
				ConvertUtils.register(new DateLocaleConverter(Locale.getDefault(),"yyyy-MM-dd HH:mm"), Date.class);
				BeanUtils.copyProperty(admin, "name", "王依依");
				BeanUtils.setProperty(admin, "dept", "设计部");
				BeanUtils.setProperty(admin, "birth", "1991-09-25 12:00");
				//使用自带转化器转化时间格式
				print(BeanUtils.getProperty(admin, "name"));
				print(BeanUtils.getProperty(admin, "dept"));
				print(BeanUtils.getProperty(admin, "birth"));
			} catch (IllegalAccessException | InvocationTargetException e) {
				e.printStackTrace();
			} catch (NoSuchMethodException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static <T> void print(T message) {
		System.out.println(message);
	}
	
}
  • 常用工具类有两个:

BeanUtils、ConvertUtils。BeanUtils用于封装数据,ConvertUtils用于处理类型转换。

  • 常用API如下:
 方法描述
BeanUtils对象copyProperty(Object p,,Object d)对象中的属性值对拷,p是等待被赋值的对象,d是源对象,将d中属性值赋值的p中对应的字段,d中有的属性p中必须有,p可以有更多属性.
populate(Object bean, Map<String,String[]>properties)  将Map数据封装到指定Javabean中,一般用于将表单的所有数据封装到javabean
 setProperty(Object obj,String name,Object value)设置属性值
getProperty(Object obj,String name)获得属性值
copyProperty(Object obj,String name,Object value)设置属性值
  • 自定义转换器
package com.yuyin.beanUtils;

import java.sql.Date;

import org.apache.commons.beanutils.Converter;

public class SqlDateConverter implements Converter {

	@Override
	public <T> T convert(Class<T> type, Object value) {
		//type要转换成的数据类型,value要转换的值
		if (value == null || type == null) {
			return null;
		}
		if (type != java.sql.Date.class) {
			return null;
		}
		if (value instanceof java.lang.String) {
			String str = (String) value;
			if (str.trim().length() > 0) {
				return (T) java.sql.Date.valueOf(str);
			}
			
		}
		return null;
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值