打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
beanUtils的用法

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

 1 public static void main(String[] args)throws Exception { 2  3        // 模拟用户的输入的数据如下 4  5        String name = "XML基础"; 6  7        String author = "焦宁波"; 8  9        String price = "99.99";10 11        String date = "2013-01-04";12 13        Book book = new Book();14 15        // 任务是将以上的属性设置给指定的Book对象16 17        BeanUtils.setProperty(book, "name", name);18 19        BeanUtils.setProperty(book, "author", author);20 21        BeanUtils.setProperty(book, "price",price );22 23        // 查看属性是否封装好24 25        System.out.println(book);26 27 }

 

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

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

 1 public static void main(String[] args)throws Exception { 2  3        // 模拟用户的输入的数据如下 4  5        String name = "XML基础"; 6  7        String author = "焦宁波"; 8  9        String price = "99.99";10 11        String date = "2013-01-04";12 13       14 15        Book book = new Book();16 17       18 19        // 注册一个自己的转换器20 21        /**22 23         * converter指定具体的转换器24 25         * clazz遇到什么类型调用上面的转换器26 27         */28 29        ConvertUtils.register(30 31               new Converter(){32 33               // 回调方法  34 35               @Override36 37               public Object convert(Class type, Object value) {38 39                   if(value == null){40 41                      return null;42 43                   }44 45                   // 转换为String46 47                   String data = (String)value;48 49                   // 将指定格式的字符串转换为Date50 51                   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");52 53                   Date date  = null;54 55                   try {56 57                      date = format.parse(data);58 59                      return date;60 61                   } catch (ParseException e) {62 63                      e.printStackTrace();64 65                      return null;66 67                   }68 69               }70 71               },72 73               Date.class);74 75        // 任务是将以上的属性设置给指定的Book对象76 77        BeanUtils.setProperty(book, "name", name);78 79        BeanUtils.setProperty(book, "author", author);80 81        BeanUtils.setProperty(book, "price",price );82 83        BeanUtils.setProperty(book, "date",date );84 85        // 查看属性是否封装好86 87        System.out.println(book);88 89 }

 

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

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

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

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

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

1 // 实现属性封装数据的一个拷贝2 3 Book copy = new Book();4 5 System.out.println(copy);6 7 PropertyUtils.copyProperties(copy, book);8 9 System.out.println(copy);

 

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
apache commons beanutils
(1)BeanUtils:威力和代价(转载)
Java语言
commons-beanutils.jar中的DynaBean
DateConverter does not support default String to 'Date' conversion.
编写更少量的代码:使用apache commons工具类库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服