五种对象属性拷贝工具类大全 Bean的属性拷贝
对象属性拷贝
BeanUtils与PropertyUtils区别:https://blog.csdn.net/u012894692/article/details/80087859
相同的: 都是浅拷贝,都提供了copyProperties()方法,只要
属性名相同就可以从源bean中拷贝值到目标bean中
不同点: BeanUtils.copyProperties提供类型转换功能,BeanUtils会调用默认的转换器(Converter)进行类型转换,所以在拷贝时能对八个基本类型间进行转换,不能转换时抛出错误
PropertyUtils.copyProperties不提供类型转换功能,即发现两个JavaBean的同名属性为不同类型时,会提示argument mistype异常。
推荐:
使用BeanUtils(
效率比BeanCopier差些 但是提供类型转换功能)或者BeanCopier (效率高些 但是只拷贝名称和类型都相同的属性)
BeanUtils: (org.springframework.beans.BeanUtils)
BookTest bookTest = new BookTest(); bookTest.setId(1); bookTest.setAuthor("作者"); bookTest.setBookName("书名"); bookTest.setIsSale(2); BookTestTemp bookTestTemp = new BookTestTemp(); // 第一个参数:源 第二个参数:目标 BeanUtils.copyProperties(bookTest,bookTestTemp); System.out.println(bookTestTemp);输出:
BookTestTemp{id=1, bookName='书名', isbn='null', author='作者'}
PropertyUtils.copyProperties(Object dest, Object orig);
实体间拷贝
User user = new User(); user.setName("张三"); user.setAge(24); User user2 = new User(); PropertyUtils.copyProperties(user2, user); System.out.println(user2);//User [name=张三, age=24]map和实体间拷贝
User user3 = new User(); Map<String,Object> map = new HashMap<String, Object>(); map.put("name", "王五"); map.put("age", 25); PropertyUtils.copyProperties(user3, map); System.out.println(user3);//User [name=王五, age=25]
1248

被折叠的 条评论
为什么被折叠?



