BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
来源:互联网 发布:工资条发放软件 编辑:程序博客网 时间:2024/06/05 00:38
BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
--------------------------------------------------------------------------------
BeanUtils
BeanUtils是这个包里比较常用的一个工具类,这里只介绍它的copyProperties()方法。该方法定义如下:
public static void copyProperties(java.lang.Object dest,java.lang.Object orig)
BeanUtils支持的转换类型如下:
* java.lang.BigDecimal
* java.lang.BigInteger
* boolean and java.lang.Boolean
* byte and java.lang.Byte
* char and java.lang.Character
* java.lang.Class
* double and java.lang.Double
* float and java.lang.Float
* int and java.lang.Integer
* long and java.lang.Long
* short and java.lang.Short
* java.lang.String
* java.sql.Date
* java.sql.Time
* java.sql.Timestamp
这里要注意一点,java.util.Date是不被支持的,而它的子类java.sql.Date是被支持的。
因此如果对象包含时间类型的属性,且希望被转换的时候,一定要使用java.sql.Date类型。否则在转换时会提示argument mistype异常。
--------------------------------------------------------------------------------
PropertyUtils
除BeanUtils外还有一个名为PropertyUtils的工具类,它也提供 copyProperties()方法,
区别在于:
PropertyUtils提供类型转换功能, 即发现两个JavaBean的同名属性为不同类型时,在支持的数据类型范围内进行转换;
而 BeanUtils 不支持类型转换功能,但是速度会更快一些。
----------------------------------------------------------------------------------------------------------------------------------------------------------------
例子:
如果你有两个具有很多相同属性的JavaBean,一个很常见的情况就是Struts里的PO对象(持久对象)和对应的ActionForm,例如 Teacher和TeacherForm。我们一般会在Action里从ActionForm构造一个PO对象,传统的方式是使用类似下面的语句对属性逐个赋值:
TeacherForm teacherForm=(TeacherForm)form;//得到TeacherForm
Teacher teacher=new Teacher();//构造Teacher对象
//赋值
teacher.setName(teacherForm.getName());
teacher.setAge(teacherForm.getAge());
teacher.setGender(teacherForm.getGender());
teacher.setMajor(teacherForm.getMajor());
teacher.setDepartment(teacherForm.getDepartment());
HibernateDAO.save(teacher);//持久化Teacher对象到数据库
而使用BeanUtils后,代码就大大改观了,如下所示:
TeacherForm teacherForm=(TeacherForm)form;//得到TeacherForm
Teacher teacher=new Teacher();//构造Teacher对象
//赋值
BeanUtils.copyProperties(teacher,teacherForm);
HibernateDAO.save(teacher);//持久化Teacher对象到数据库
如果Teacher和TeacherForm间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,需要程序员手动处理。例如 Teacher包含modifyDate(该属性记录最后修改日期,不需要用户在界面中输入)属性而TeacherForm无此属性,那么在上面代码的 copyProperties()后还要加上一句:
teacher.setModifyDate(new Date());
- BeanUtils.copyProperties 与 PropertyUtils.copyProperties 用法及区别
- BeanUtils.copyProperties 与 PropertyUtils.copyProperties 用法及区别
- BeanUtils.copyProperties 与 PropertyUtils.copyProperties 用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别[转载]
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别(转)
- BeanUtils.copyProperties 与 PropertyUtils.copyProperties 用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别[转载]
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别[转载]
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- [android] 将Java程序移植到android上
- 如何使用POI处理Excel中的日期数据类型
- 《新知客》趣题专栏2010.08
- Android Resource介绍和使
- Android UI学习 - Menu
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- 人所不欲,勿施于人
- 关于java引用传递
- QT 添加启动画面
- List和ArrayList的区别
- C++string类常用函数默认分类
- 周报——学习方法小结。
- ADO.NET的数据库 连接字符串 SQL SERVER
- 存储过程常用技巧