beanutils
【简介】
beanutils工具是一种方便我们对javaBean进行操作的工具,是Apache组织下的产品。
【maven依赖】
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
【常用API】
// 把orig对象copy到dest对象中.
public void copyProperties (Object dest, Object orig)
// 把Bean的属性值放入到一个Map里面
public Map describe(Object bean)
// 把map里面的值放入bean中
public void populate (Object bean, Map map)
// 设置Bean对象中名称为name的属性值赋值为value.
public void setProperty(Object bean,String name, Object value)
// 取得bean对象中名为name的属性的值
public String getProperty(Object bean, String name)
【常见使用场景】
- 同类之间不同对象要求进行数据复制
User user1 = new User();
user1.setName("张三");
User user2 = new User();
// 把user1复制给user2
BeanUtils. copyProperties(user2,user1);
- 不同类不同对象之间的数据复制
UserForm userForm = new UserForm ();
User user = new User();
// 把userForm 复制给user
BeanUtils. copyProperties(user, userForm);
- 对象数据和Map之间互相转化
User user = new User();
// 将对象转换为Map
Map userMap = BeanUtils.describe(user);
Map userMap = new HashMap();
User user = new User();
// 将Map转换为对象
beanutils.populate(user,userMap);
【日期类型的拷贝】
beanutils.copyproperties支持Date类型:
【转】https://blog.csdn.net/adam_wzs/article/details/54092732
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.log4j.Logger;
/**
* 扩展BeanUtils.copyProperties支持data类型
*/
public class BeanUtilsEx extends BeanUtils {
private static Logger logger = Logger.getLogger(BeanUtilsEx.class);
static {
ConvertUtils.register(new DateConvert(), java.util.Date.class);
ConvertUtils.register(new DateConvert(), String.class);
}
public static void copyProperties(Object target, Object source) {
// 支持对日期copy
try {
org.apache.commons.beanutils.BeanUtils.copyProperties(target, source);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.ERROR("扩展BeanUtils.copyProperties支持data类型:" + e.getmessage());
e.printstacktrace();
}
}
}
import java.text.DateFormat;
import java.text.ParseException;
import java.text.simpledateformat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
/**
* 扩展BeanUtils.copyProperties支持data类型
*/
public class DateConvert implements Converter {
@Override
public Object convert(Class class1, Object value) {
if (value == null) {
return null;
}
if (value instanceof Date) {
return value;
}
if (value instanceof Long) {
Long longValue = (Long) value;
return new Date(longValue.longValue());
}
if (value instanceof String) {
String dateStr = (String) value;
Date endTime = null;
try {
String regexp1 = "([0-9]{4})-([0-1][0-9])-([0-3][0-9])T([0-2][0-9]):([0-6][0-9]):([0-6][0-9])";
String regexp2 = "([0-9]{4})-([0-1][0-9])-([0-3][0-9])(/t)([0-2][0-9]):([0-6][0-9]):([0-6][0-9])";
String regexp3 = "([0-9]{4})-([0-1][0-9])-([0-3][0-9])";
if (dateStr.matches(regexp1)) {
dateStr = dateStr.split("T")[0] + " " + dateStr.split("T")[1];
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
endTime = sdf.parse(dateStr);
return endTime;
} else if (dateStr.matches(regexp2)) {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
endTime = sdf.parse(dateStr);
return endTime;
} else if (dateStr.matches(regexp3)) {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
endTime = sdf.parse(dateStr);
return endTime;
} else {
return dateStr;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return value;
}
}
【封装工具类】
把请求中的参数拷贝到javaBean对象中
// 约定前提: 请求中的参数名称需要和javabean的属性名称保持一致!!!!
public static <T>T requestToBean(HttpServletRequest request , Class<T> clazz) {
//创建javaBean对象
Object obj=null;
try {
obj=clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
throw new runtimeexception(e);
}
//得到请求中的每个参数
Enumeration<String> enu = request.getparameterNames();
while(enu.hasMoreElements()) {
//获得参数名
String name = enu.nextElement();
//获得参数值
String value = request.getParameter(name);
//然后把参数拷贝到javaBean对象中
try {
BeanUtils.setProperty(obj, name, value);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
return (T)obj;
}
相关阅读
导包beanutils.jarcommons-logging.jar方法的作用:用来将一些 key-value 的值(例如 hashmap)映射到 bean 中的属性。BeanUtils:控制
谨慎使用这个copyproperties这个功能,相同的属性都会被替换,不管是否有值 BeanUtils 是 Apache commons组件的成员之一,主
BeanUtils.copyProperties()方法的用法及效率
一、简介: org.springframework.beans.BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行
Beanutils.copyProperties( )用法及重写提高效率
一、简介:BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通
一般来说,这个方法是在org.apache.commons.beanutils.BeanUtils包中的方法。 该方法的函数原型为:BeanUtils.populate( Object bea