Bean属性复制:Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier
2016-07-20 11:15
645 查看
1、比较:
1)apache和spring的BeanUtils都是使用了反射机制,所以效率一般。spring的效率要高于Apache(Apache相当的耗费资源!)
2)cglib使用动态代理原理来时先属性的拷贝,所以效率最高。
3)Apache中,BeanUtils和PropertyUtils的区别:后者可以提供类型转换功能,即发现两个JavaBean的同名属性为不同类型时,在支持的数据类型范围内进行转换,而前者不支持这个功能,但是速度会更快一些。支持的转换类型如下:
* 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异常。
2、spring BeanUtils使用:
1)手工复制:
/得到TeacherForm
TeacherForm teacherForm=(TeacherForm)form;
//构造Teacher对象
Teacher teacher=new Teacher();
//赋值
teacher.setName(teacherForm.getName());
teacher.setAge(teacherForm.getAge());
teacher.setGender(teacherForm.getGender());
teacher.setMajor(teacherForm.getMajor());
teacher.setDepartment(teacherForm.getDepartment());
//持久化Teacher对象到数据库
HibernateDAO.save(teacher);
2)使用BeanUtils后,代码就大大改观了,如下所示:
如果Teacher和TeacherForm间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,需要程序员手动处理。
1)apache和spring的BeanUtils都是使用了反射机制,所以效率一般。spring的效率要高于Apache(Apache相当的耗费资源!)
2)cglib使用动态代理原理来时先属性的拷贝,所以效率最高。
3)Apache中,BeanUtils和PropertyUtils的区别:后者可以提供类型转换功能,即发现两个JavaBean的同名属性为不同类型时,在支持的数据类型范围内进行转换,而前者不支持这个功能,但是速度会更快一些。支持的转换类型如下:
* 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异常。
2、spring BeanUtils使用:
1)手工复制:
/得到TeacherForm
TeacherForm teacherForm=(TeacherForm)form;
//构造Teacher对象
Teacher teacher=new Teacher();
//赋值
teacher.setName(teacherForm.getName());
teacher.setAge(teacherForm.getAge());
teacher.setGender(teacherForm.getGender());
teacher.setMajor(teacherForm.getMajor());
teacher.setDepartment(teacherForm.getDepartment());
//持久化Teacher对象到数据库
HibernateDAO.save(teacher);
2)使用BeanUtils后,代码就大大改观了,如下所示:
//得到TeacherForm TeacherForm teacherForm=(TeacherForm)form; //构造Teacher对象 Teacher teacher=new Teacher(); //赋值 BeanUtils.copyProperties(teacher,teacherForm); //持久化Teacher对象到数据库 HibernateDAO.save(teacher);
如果Teacher和TeacherForm间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,需要程序员手动处理。
相关文章推荐
- org.apache.ibatis.binding.BindingException【原因汇总】
- Windows7下Apache2.x与PHP5.2.6的傻瓜式配置(图文+分步解析)
- linux apache mysql php
- APACHE-CXF demo
- 用apache-cxf生成webservice客户端的时候报错Parameter: shead already exists for method
- Linux:一台apache服务器上部署多个项目的apache配置
- PHP开发网站第二步:关联并配置PHP与Apache2.4
- drbd+apache+heartbeat
- 如何在Apache 上配置 WebDAV 服务器
- Apache Solr入门教程(初学者之旅)
- Centos6.7安装Apache2.4+Mysql5.5+Apache2.4
- apache thrift
- Apache服务器解压版配置(win版)
- Java安全框架 Apache Shiro学习-1-ini 配置
- JAVA api 远程hbase出错 org.apache.hadoop.hbase.client.RetriesExhaustedException
- 调优apache的性能
- org.apache.hadoop.security.AccessControlException 解决办法
- Centos apache + mysql + usvn 配置svn 服务器
- apache配置Options详解
- 13个实用的Apache Rewrite重写规则