举例1:使用BeanUtils工具封装用户提交的数据。

 public static void main(String[] args)throws Exception {

        // 模拟用户的输入的数据如下

        String name = "XML基础";

        String author = "焦宁波";

        String price = "99.99";

        String date = "2013-01-04";

        Book book = new Book();

        // 任务是将以上的属性设置给指定的Book对象

        BeanUtils.setProperty(book, "name", name);

        BeanUtils.setProperty(book, "author", author);

        BeanUtils.setProperty(book, "price",price );

        // 查看属性是否封装好

        System.out.println(book);

 }

发现使用上面的代码可以省略基本数据类型的转型的问题。进而提高代码的开发效率。

举例2:自定义一个类型转换器类。

 public static void main(String[] args)throws Exception {

        // 模拟用户的输入的数据如下

        String name = "XML基础";

        String author = "焦宁波";

        String price = "99.99";

        String date = "2013-01-04";

        Book book = new Book();

        // 注册一个自己的转换器

        /**

         * converter指定具体的转换器

         * clazz遇到什么类型调用上面的转换器

         */

        ConvertUtils.register(

               new Converter(){

               // 回调方法  

               @Override

               public Object convert(Class type, Object value) {

                   if(value == null){

                      return null;

                   }

                   // 转换为String

                   String data = (String)value;

                   // 将指定格式的字符串转换为Date

                   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

                   Date date  = null;

                   try {

                      date = format.parse(data);

                      return date;

                   } catch (ParseException e) {

                      e.printStackTrace();

                      return null;

                   }

               }

               },

               Date.class);

        // 任务是将以上的属性设置给指定的Book对象

        BeanUtils.setProperty(book, "name", name);

        BeanUtils.setProperty(book, "author", author);

        BeanUtils.setProperty(book, "price",price );

        BeanUtils.setProperty(book, "date",date );

        // 查看属性是否封装好

        System.out.println(book);

 }

如果每次遇到一个复杂类型都需要自定义转换器,那样的话实在麻烦。大家看在开发的时候可以先查看该接口是否提供了有效的实现类。

ConvertUtils.register(new DateLocaleConverter(), Date.class);

其实真正的封装好的数据需要存储在数据库中,那么javabean的数据类型应该和数据库的数据类型保持一致,那么在声明持久化javabean的时候需要全部为数据库的基本数据类型。

因此大家在JavaBean中需要导入的是java.sql.Date类,这样就直接可以将日期自动转换了。

举例3:实现封装好的JavaBean对象的属性拷贝。

 // 实现属性封装数据的一个拷贝

 Book copy = new Book();

 System.out.println(copy);

 PropertyUtils.copyProperties(copy, book);

 System.out.println(copy);

思考:如果使用BeanUtils封装用户的数据,那么也就是一个一个设置啊?岂不是也很麻烦?

其实在真是的环境中我们可以直接获取用户提交的所有的数据信息,只需要进行遍历即可,但是为了方便快速的设置,那么可以将javabean中的属性名和用户提交的数据名保持一致。

beanUtils的用法的更多相关文章

  1. java Beanutils.copyProperties( )用法

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

  2. (转载)BeanUtils.copyProperties() 用法

    BeanUtils.copyProperties() 用法 标签: hibernateuserjdbc数据库strutsjava 2009-10-17 23:04 35498人阅读 评论(6) 收藏  ...

  3. BeanUtils.copyProperties用法

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

  4. Spring、Commons的BeanUtils.copyProperties用法

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

  5. Beanutils基本用法

    Beanutils用了魔术般的反射技术,实现了很多夸张有用的功能,都是C/C++时代不敢想的.无论谁的项目,始终一天都会用得上它.我算是后知后觉了,第一回看到它的时候居然错过. 1.属性的动态gett ...

  6. BeanUtils.copyProperties() 用法

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

  7. Spring BeanUtils的用法

    package test; import java.util.Date; import org.springframework.beans.BeanUtils; import test.basic.B ...

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

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

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

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

随机推荐

  1. JSTL fmt 格式化时间

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  2. 基于Android的ELF PLT/GOT符号重定向过程及ELF Hook实现(by 低端码农 2014.10.27)

    引言 写这篇技术文的原因,主要有两个: 其一是发现网上大部分描写叙述PLT/GOT符号重定向过程的文章都是针对x86的.比方<Redirecting functions in shared EL ...

  3. php扩展开发笔记(2)多个源代码文件的配置和编译

    我们在开发过程中,为了代码得可读性和易维护性,肯定是须要多个代码文件的,而不不过通过 ext_skel 生成得骨架文件. 这篇文章主要介绍下.多个代码文件的时候.我们须要注意什么,以及怎么做. 我的代 ...

  4. 使用HTML5开发离线应用 - cache manifest

    HTML5 是目前正在讨论的新一代 HTML 标准,它代表了现在 Web 领域的最新发展方向.在 HTML5 标准中,加入了新的多样的内容描述标签,直接支持表单验证.视频音频标签.网页元素的拖拽.离线 ...

  5. 3D屏保:排色榜

    3D屏保:排色榜 排色榜,是一个针对图形学中的色彩进行排序的DEMO,这里的色是色彩的意思,看成别的点进来的同学请自觉面壁.该DEMO可以按RGB,GBR,BRG,灰度值四种方式进行排序.排序算法为冒 ...

  6. Nginx zabbix 的监控

    Nginx zabbix 的监控 Nginx 配置 Nginx 必须包含:http_stub_status_module 模块 ./nginx -V |grep http_stub_status_mo ...

  7. WebSettings 文档 API 翻译 常用设置

    . setDefaultFontSize(int size)  Sets the default font size. The default is 16. setDefaultTextEncodin ...

  8. :Windows下RabbitMQ安装及入门

    1.Windows下安装RabbitMQ需要以下几个步骤 (1):下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang. ...

  9. 基于Packet Tracer 组建智能公司局域网

    背景及要求                                                                                               ...

  10. Unity异步加载场景loading条

    using UnityEngine; using System.Collections; public class LoadingScene : MonoBehaviour { public UISl ...