举例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. td顶部对齐

    <td width=568 colspan=3 valign="top" style='width:426.1pt;border:none; border-bottom:so ...

  2. springboot 启动类CommandLineRunner(转载)

    在Spring boot项目的实际开发中,我们有时需要项目服务启动时加载一些数据或预先完成某些动作.为了解决这样的问题,Spring boot 为我们提供了一个方法:通过实现接口 CommandLin ...

  3. Android几种Service常驻内存的小思路

    老话说的好:躲得了初一,躲只是高三 ! 大多数的Android开发人员遇到的一个问题-怎样保证Service常驻内存. 近期我最终也在项目中务必幸运的遇到了 先来了解一下什么是Service常驻内存. ...

  4. Java文件操作大全

    //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPath.exists()) ...

  5. Android之ViewPager循环Demo

    ViewPager是谷歌官方提供的兼容低版本安卓设备的软件包,里面包含了只有在安卓3.0以上可以使用的api.Viewpager现在也算是标配了,如果一个App没有用到ViewPager感觉还是比较罕 ...

  6. ListView.MouseDoubleClick

    private void ruleListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { ListViewItem ite ...

  7. Linux上如何查看Deb和RPM软件包的更新日志

    导读 当一个程序或库打包成Deb或RPM软件包后会有一些元数据文件包含在其中,其中之一就是 changelog文件,它记录了软件包每次更新后发生了什么变化.因此,如果你想找出你安装或更新的软件包发生了 ...

  8. CentOS 服务器安全设置

      我们必须明白:最小的权限+最少的服务=最大的安全.所以无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小化,这样才能保证服务器最大的安全. 一.注释掉系统不需要的用户和用户组 ...

  9. windows server2012部署Cognos问题小结

    一:数据库配置问题   1:.net Framework3.5问题 window Server2012 安装数据库的时候可能会报缺少.net Framework3.5,需要去服务管理器添加.net F ...

  10. MFC apps must not include windows.h

    用VS2008建立一个DLL项目,一开始的时候不想用MFC, 所以选择的是使用标准Windows库. 使用了一段时间后又想用MFC了,所以把选项改成使用在共享 DLL 中使用 MFC. 但是编译的时候 ...