2009-10-17 23:04 35498人阅读 评论(6) 收藏 举报
 分类:
struts1.x(14) 

一、简介:

BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。

二、用法:

如果你有两个具有很多相同属性的JavaBean,一个很常见的情况就是Struts里的PO对象(持久对象)和对应的ActionForm。例如:一个用户注册页面,有一个User实体类和一个UserActionForm,我们一般会在Action里从ActionForm构造一个PO对象,传统的方式是使用类似下面的语句对属性逐个赋值:

  1. // 获取 ActionForm 表单数据
  2. UserActionForm uForm = (UserActionForm) form;
  3. // 构造一个User对象
  4. User user = new User();
  5. // 逐一赋值
  6. user.setUsername(uForm.getUsername);
  7. user.setPassword(uForm.getPassword);
  8. user.setAge(uForm.getAge);
  9. ...........
  10. ...........
  11. // 然后调用JDBC、或操作Hibernate 持久化对象User到数据库
  12. ...
  1. <span style="font-size: large;">// 获取 ActionForm 表单数据
  2. UserActionForm uForm = (UserActionForm) form;
  3. // 构造一个User对象
  4. User user = new User();
  5. // 逐一赋值
  6. user.setUsername(uForm.getUsername);
  7. user.setPassword(uForm.getPassword);
  8. user.setAge(uForm.getAge);
  9. ...........
  10. ...........
  11. // 然后调用JDBC、或操作Hibernate 持久化对象User到数据库
  12. ...
  13. </span>

通过这样的方法如果表单数据N多、100、1000(夸张点。哈哈)、、、、那我们不是要写100、、、1000行set、get了。谁都不愿意这样做。

而我们使用 BeanUtils.copyProperties() 方法以后,代码量大大的减少,而且整体程序看着也简洁明朗,代码如下:

  1. // 获取 ActionForm 表单数据
  2. UserActionForm uForm = (UserActionForm) form;
  3. // 构造一个User对象
  4. User user = new User();
  5. // 赋值
  6. BeanUtils.copyProperties(user, uForm);
  7. // 然后调用JDBC、或操作Hibernate 持久化对象User到数据库
  8. .......
  1. <span style="font-size: large;">// 获取 ActionForm 表单数据
  2. UserActionForm uForm = (UserActionForm) form;
  3. // 构造一个User对象
  4. User user = new User();
  5. // 赋值
  6. BeanUtils.copyProperties(user, uForm);
  7. // 然后调用JDBC、或操作Hibernate 持久化对象User到数据库
  8. .......
  9. </span>

很方便是吧。

注:如果User和UserActionForm 间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,需要手动处理。例如:

User类里面有个createDate 创建时间字段,而UserActionForm里面无此字段。BeanUtils.copyProperties()不会对此字段做任何处理。必须要自己手动处理。

本文来自:http://starzhang.javaeye.com/blog/361954

(转载)BeanUtils.copyProperties() 用法的更多相关文章

  1. BeanUtils.copyProperties用法

    spring的BeanUtils.copyProperties用法 原创 2010年06月03日 13:43:00 标签: spring / struts / 数据库 / 工具 / action 一. ...

  2. java Beanutils.copyProperties( )用法

    这是一篇开发自辩甩锅稿~~~~ 昨天测试小姐姐将我的一个bug单重开了,emmmm....内心OS:就调整下对象某个属性类型这么简单的操作,我怎么可能会出错呢,一定不是我的锅!!but再怎么抗拒,bu ...

  3. BeanUtils.copyProperties() 用法

    BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处 ...

  4. Spring、Commons的BeanUtils.copyProperties用法

    如果两个对象A.B的大部分属性的名字都一样,此时想将A的属性值复制给B,一个一个属性GET\SET代码量太大,可以通过复制属性的方式减小工作量,同时代码看起来更加简洁明了,复制属性可以用Spring或 ...

  5. BeanUtils.copyProperties() 用法--部分转

    把一个类对象copy到另一个类对象(这两个可以不同). 1.org.apache.commons.beanutils.BeanUtils.copyProperties(dest, src) org.s ...

  6. 关于BeanUtils.copyProperties() 用法及区别

    这两个类在不同的包下面,而这两个类的copyProperties()方法里面传递的参数赋值是相反的. 例如:a,b为对象BeanUtils.copyProperties(a, b); BeanUtil ...

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

    参考地址:https://blog.csdn.net/w05980598/article/details/79134379 待研究中.....

  8. 【Java】【3】BeanUtils.copyProperties();将一个实体类的值复制到另外一个实体类

    正文: a,b为对象 BeanUtils.copyProperties(a,  b); 1,BeanUtils是org.springframework.beans.BeanUtils, a拷贝到b 2 ...

  9. BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别

    一.简介: BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean 通常包含了大量的属性,很多情况下,对Jav ...

随机推荐

  1. Combo Select – jQuery可搜索下拉框插件

    今天用到另一款jq插件..插件就是无脑,,引入相关文件,开始撸吧 引入相关文件: <link href="~/Scripts/combo-select/combo.select.css ...

  2. Redis学习笔记(八) 基本命令:SortedSet操作

    原文链接:http://doc.redisfans.com/sorted_set/index.html SortedSet的数据结构类似于Set,不同的是Sorted中的每个成员都分配了一个值(Sco ...

  3. FFmpeg 移植 Android

    近期项目需要解析苹果的HLS流媒体协议,而FFmpeg从0.11.1“Happiness”版本开始,才增加了对HLS协议的支持.目前网上关于FFmpeg编译移植的文章有很多,但大多都是对旧版本的说明. ...

  4. c#常量如何使用

    c#中类中定义一个常量,在其他地方使用的时候使用类名.常量

  5. Ubuntu14.04下Mongodb的Java API编程实例(手动项目或者maven项目)

    不多说,直接上干货! 若大家,不会安装的话,则请移步,随便挑选一种. Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐) Ubuntu14.04 ...

  6. C# 正则表达式

    C# 正则表达式 正则表达式 是一种匹配输入文本的模式..Net 框架提供了允许这种匹配的正则表达式引擎.模式由一个或多个字符.运算符和结构组成. 定义正则表达式 下面列出了用于定义正则表达式的各种类 ...

  7. Centos7 minimal 系列之NAT联网(一)

    一.安装 参考:http://m.blog.csdn.net/qq_24879495/article/details/77838512 二.解决不能联网问题 打开网络共享中心,设置虚拟网卡 编辑虚拟机 ...

  8. 一个基于Vue.js+Mongodb+Node.js的博客内容管理系统

    这个项目最初其实是fork别人的项目.当初想接触下mongodb数据库,找个例子学习下,后来改着改着就面目全非了.后台和数据库重构,前端增加了登录注册功能,仅保留了博客设置页面,但是也优化了. 一.功 ...

  9. vue <router-view>没有渲染

    将routes中的components换成component

  10. 「JavaSE 重新出发」05.01.02 hashCode 方法、toString 方法

    hashCode 方法 散列码(hash code)是由对象导出的一个整形值(可以是负数).其是没有规律的,如果x与y是两个不同的对象,则x.hashCode()与y.hashCode()基本上不会相 ...