必威体育Betway必威体育官网
当前位置:首页 > IT技术

BeanUtils

时间:2019-09-11 06:42:09来源:IT技术作者:seo实验室小编阅读:64次「手机版」
 

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.populate()方法的使用;

导包beanutils.jarcommons-logging.jar方法的作用:用来将一些 key-value 的值(例如 hashmap)映射到 bean 中的属性。BeanUtils:控制

BeanUtils工具类常用方法

   谨慎使用这个copyproperties这个功能,相同的属性都会被替换,不管是否有值  BeanUtils 是 Apache commons组件的成员之一,主

BeanUtils.copyProperties()方法的用法及效率

一、简介: org.springframework.beans.BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行

Beanutils.copyProperties( )用法及重写提高效率

一、简介:BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通

BeanUtils.populate方法的作用

一般来说,这个方法是在org.apache.commons.beanutils.BeanUtils包中的方法。 该方法的函数原型为:BeanUtils.populate( Object bea

分享到:

栏目导航

推荐阅读

热门阅读