BeanUtils组件使用小指南
一,概述
程序中对JavaBean的操作还是相当频繁的,但是总有那么一些好用到爆炸的开源组件,为无数开发者提供便利.今天就记一下BeanUtils组件的简单用法.BeanUtils是Apache提供的开源组件,主要就是为了简化对JavaBean的操作.
二,使用
开发者去官网下载相应的组件,将commons-beanutils-1.8.3.jar 和commons-logging-1.1.3.jar一起导入到项目中即可使用.需要注意的是,前面那个jar包是依赖后那个日志jar包的,少了日志jar包程序会报错的.
三,基本用法
1)Admin.java是一个标准的JavaBean类,有userName pwd age(类型:String String int) 三个属性如果对JavaBean定义不熟悉的话,参考这篇关于JavaBean的文章.
@Testpublic void test1() throws Exception{Admin ad=new Admin();//ad.setUserName("erqiu");//ad.setPwd("123456");//BeanUtils组件实现对象属性的赋值:下面两者实现的效果是一样的BeanUtils.copyProperty(ad, "userName", "bighuan");BeanUtils.setProperty(ad, "age", 21);//总结:对于基本数据类型,会自动进行类型转换//拷贝对象Admin newAdmin=new Admin();BeanUtils.copyProperties(newAdmin, ad);//map数据拷贝到对象中Admin mapAdmin=new Admin();Map<String , Object> map=new HashMap<String , Object>();map.put("userName", "ergou");map.put("age", 32);//map中的key要与javabean一样BeanUtils.populate(mapAdmin, map);}
BeanUtils底层就是通过反射来为属性赋值,所以前面才会强调Admin.java是一个标准的javabean类,如果不是javabean的话,是很有可能出错的.在贴的代码中都有注释,就不解释了,有看官看的话,自己运行看看效果即可知道用法.
2)对于某些特殊类型的属性,直接使用BeanUtils对属性赋值是会保错的.这时就需要自定义转换器或者使用BeanUtils提供的转换器了.
在Admin.java中增加一个birth属性,birth是Date(java.util.Date)类型,生成相应的setter和getter方法.
a)自定义日期类型转换器
/*** 自定义日期类型转换器* @throws Exception*/@Testpublic void test2() throws Exception{//注册日期类型转换器:自定义方式//static void register(Converter converter, Class clazz)ConvertUtils.register(new Converter() {//转换的内部实现方法,需要重写@Overridepublic Object convert(Class type, Object value) {//判断if(type != Date.class){return null;}if(value == null || "".equals(value.toString().trim())){return null;}SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");try {return sdf.parse(value.toString());} catch (ParseException e) {e.printStackTrace();return null;}}}, Date.class);String userName="bighuan";int age=21;String birth="1995-09-23";//String birth=null;Admin admin=new Admin();BeanUtils.copyProperty(admin, "userName", userName);BeanUtils.copyProperty(admin, "age", age);BeanUtils.copyProperty(admin, "birth", birth);System.out.println(admin.toString());}
看代码,不解释,因为感觉没什么可说的...
b)使用BeanUtils组件提供的转换类
@Testpublic void test3() throws Exception {// 注册日期类型转换器:自定义方式// static void register(Converter converter, Class clazz)// 这种方式"" " "不能处理ConvertUtils.register(new DateLocaleConverter(), Date.class);String userName = "bighuan";int age = 21;String birth = "1995-09-23";// String birth=" ";Admin admin = new Admin();BeanUtils.copyProperty(admin, "userName", userName);BeanUtils.copyProperty(admin, "age", age);BeanUtils.copyProperty(admin, "birth", birth);System.out.println(admin.toString());}
//DateLocaleConverter()没有对空串""空格" "空等做处理,当这些情况出现时,程序会崩溃掉.自定义的日期类型转换器是做了处理的,看见了吗?
四,应用
在Servlet中接受表单提交过来的数据时,经常需要一个一个拿出来,然后封装到一个javabean中,挺繁琐的.通过BeanUtils,真的简单了许多.为什么?你看一下下面的代码量...
/*** 处理请求数据的封装*/public static <T> T copyToBean(HttpServletRequest request, Class<T> clazz) {try {// 创建对象T t = clazz.newInstance();BeanUtils.populate(t, request.getParameterMap());return t;} catch (Exception e) {throw new RuntimeException(e);}}
解释一下,clazz就是我们javabean的.class,在Servlet中通过request.getParameterMap()将所有数据拿到,返回一个map,然后将map中的数据拷贝到对象中,也就是我们的javabean中.真的是简便了许多操作啊,开源就是厉害啊...
五,总结
我的总结一般都是说再见...再见啦,下篇博客见...
BeanUtils组件使用小指南相关推荐
- BeanUtils组件
程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils组件, 作用是简化javabean的操作! ...
- Common BeanUtils组件的使用(源码)
http://www.cnblogs.com/shiyangxt/archive/2008/08/07/1263054.html Common BeanUtils组件方便了对JavaBean的使用.其 ...
- Blazor 组件库开发指南
翻译自 Waqas Anwar 2021年5月21日的文章 <A Developer's Guide To Blazor Component Libraries> [1] Blazor 的 ...
- [转载]我的PMP复习备考经验谈(下篇)——一本关于PMP备考的小指南
原文地址:我的PMP复习备考经验谈(下篇)--一本关于PMP备考的小指南作者:羽少宸 PMP复习备考经验谈(下篇)--PMP备考小指南 总结经验,展望未来,以此纪念PMP复习备考时光 继上篇,猛击直达 ...
- html怎样使用ui套件,weui框架组件小白入门指南:如何安装使用weui.js?
本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. 苏南大叔在本文中说说腾讯的weui这个前端框架的基本使用方法.这款框架已经问世有几年的时间了,因为其可以把微信 ...
- 微信小程序之组件 —— 微信小程序教程系列(19)
什么是组件: 组件是视图层的基本组成单元. 组件自带一些功能与微信风格的样式. 一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内. <tagname property ...
- android 组件透明,万能小组件透明小组件-万能小组件透明背景设置v1.0.0 安卓版_永辉资源网...
万能小组件透明背景设置全新为广大用户带来的精美小组件模板应用服务平台,有海量的小组件,快捷方式小组件以及照片小组件,让你的桌面更加简单美观,感兴趣的朋友快来下载体验吧! 万能小组件透明小组件软件介绍: ...
- java 调用 jacob_java访问com组件_jacob使用指南
一.准备工作 先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的.这是一 ...
- Android架构组件-App架构指南
Android架构组件-App架构指南 Android架构组件-WorkManager Android架构组件- Room数据库的使用 Android架构组件-Lifecycle Android架构组 ...
- Vue中两个让你幸福感爆棚的组件导入小技巧之require.context
前言 小伙伴们大家好,在上一篇文章Vue中两个让你幸福感爆棚的组件导入小技巧之循环代替Ctrl C/V(独家总结)中我们已经学习了一个注册全局组件的小技巧,使得我们在注册大量全局组件时不再被Vue.u ...
最新文章
- linux web服务器,防火墙iptables最简配置
- windows下svn server迁移
- Linq to sql和lambda
- 聚类(1)——混合高斯模型 Gaussian Mixture Model
- jspServlet(2)
- linux设备驱动学习(四)——阻塞与非阻塞I/O
- java delete file 失败_文件无法删除java.io.IOException: Unable to delete
- 最新版WinRAR 6.0 永久去除广告
- 马哥Linux学习笔记2-3Linux命令帮助的获取详解
- Linux导出未越狱Iphone10.3-QQ聊天记录
- 树莓派Python实现相机控制,定时与画面变化捕捉拍照
- 免费 whois 查询 API
- vsCode好用插件记录
- 回环口--Loopback接口
- NBA表格_NBA球星大排位16—季后赛荣誉汇总
- 日期转换 例如 二零零六年十二月二十一日 转换成 2006年12月21日
- 归并排序---------数构
- Web测试的常见测试点
- 分布式日志sleuth+分布式追踪系统zipkin+消息中间件rabbitMQ+MySQL存储跟踪数据
- 具有超能力的对话式机器人性能如何? #Chatsonic AI