BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。
使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean。
例一
Book srcBook = new Book();
srcBook.setName("Java");
Book destBook = new Book();
PropertyUtils.copyProperties(destBook, srcBook);
System.out.println(destBook.getName());
例二(对删除的数据进行备份)
Student s = new Student();
s.setName("xy")
................
StudentBak sbak = new StudentBak();
PropertyUtils.copyProperties(sbak , s);
StudentBakDao.save(sbak);
StudentDao.delete(s);
没有PropertyUtils.copyProperties,我们只能
StudentBak sbak = new StudentBak();
sbak.setName(s.getName);
.........................
如果有是十个属性,我们不是累呆了。
该方法做对象的拷贝很方便,但是它的性能问题相当差
看下面的测试代码:
public class A
{
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
import org.apache.commons.beanutils.PropertyUtils;
public class PropertyUtilsTest
{
public static void main(String []args)
{
普通的copy,每个字段拷贝
A a1 = new A();
a1.setName("wang");
A a2 = new A();
long b = new java.util.Date().getTime();
a2.setName(a1.getName());
long e = new java.util.Date().getTime();
System.out.println("time1="+(e-b));
try
{
PropertyUtils.copyProperties方法copy
A a3 = new A();
b = new java.util.Date().getTime();
PropertyUtils.copyProperties(a3, a1);
e = new java.util.Date().getTime();
System.out.println("time2="+(e-b));
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
}
最后输出:
time1=0
time2=265
两种方法时间差那么多!
分享到:
相关推荐
主要介绍了Java反射获取class对象方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
BeanUtils.java CachedIntrospectionResults.java ClassUtils.java ...PropertyUtils.java ReflectionUtils.java ResourceUtils.java SerializationUtils.java StringUtils.java TypeUtils.java Validate.java
jar包,官方版本,自测可用
NULL 博文链接:https://m635674608.iteye.com/blog/2270455
jar包,官方版本,自测可用
jar包,官方版本,自测可用
18:JsonTools json与对象转化的工具类 19:JsonVo 20:MathsTool 取一个int十进制数二进制下的第p位 21:ObjectCopyTool 22:PageVo 分页器 23:PropertyUtils 属性工具类 24:QuerySqlUtil 25:RegexUtils 26:...
easymock-propertyutils 注意:此库未维护,可能已被取代 这个库允许你在使用时对参数使用 JavaBeans 风格的属性匹配
Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的。无论谁的项目,始终一天都会用得上它。我算是后知后觉了,第一回看到它的...4.5 动态Bean 见用DynaBean减除不必要的VO和FormBean
PropertyUtils Property Unility Class RandomUtils Random Unility Class ResourceUtils Resource Unility Class SHA1Utils Sha1 Unility Class SerializableUtils Serializable Unility Class ...
1.1,beanutils propertyUtils类副本与反射副本使用及效率比较。 1.2,收藏CollectionUtils从一个列表中查找符合一定条件的对象。 2,太阳 2.1,发送邮件javax.mail完成邮件的发送和接收。 3,MyBatis 3.1,基本...
1.PropertyUtils 对标注NotNull注解的属性,检查其值是否为null 2.JsonUtils 用于获取json字符串中指定key的value 示例 json = {"name":"刘禅","age":"6","father":{"name":"刘备","age":"50","properties": {...