apache-beanutil工具类的使用
BeanUtil工具类是apache commons中的项目 使用BeanUtil除了需要 commons-beanutils-1.8.3.jar 外,可能需要记录错误日志信息,再加入 commons-logging-1.1.3.jar(也是apache的) 即可
下面着重看一些例子
// 实体类User Point,这里就省去get,set方法 package com.yangwei.model; import java.util.Date; public class User { private String name; private int age; private Date birth; private Point point; } public class Point { private int x; private int y; }
package com.yangwei.test; import static org.junit.Assert.fail; import java.lang.reflect.InvocationTargetException; import org.apache.commons.beanutils.BeanUtils; import org.junit.Test; import com.yangwei.model.User; public class TestBeanUtil { @Test public void test01() { try { User u=new User(); //假设要为name设置值"zhangsan" String key="name"; String value="zhangsan"; //以前我们使用Method 调用它的invoke方法完成操作 //现在我们使用BeanUtils的copyProperty完成设值操作 BeanUtils.copyProperty(u, key, value); System.out.println(u.getName());//zhangsan //拷贝不认识的属性,也不会报错 BeanUtils.copyProperty(u, "yyy", value); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }
两个转换器类 ,实现Converter接口 package com.yangwei.model; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.beanutils.Converter; public class DateConverter implements Converter{ /** * 第一个参数表示要转换的类型, 第二个参数表示要转换的值 * 比如要拷贝一个字符串到日期中,第一个参数就是日期,第二个参数是字符串值 */ SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd"); @Override public Object convert(Class clz, Object obj) { if(clz!=Date.class){ return null; } try { if(obj instanceof String){ return f.parse((String) obj); } } catch (ParseException e) { e.printStackTrace(); } return null; } }
package com.yangwei.model; import org.apache.commons.beanutils.Converter; public class PointConverter implements Converter { /** * 将传递过来的值转为Point类 */ @Override public Object convert(Class clz, Object obj) { if(clz!=Point.class){ return null; } if(obj instanceof String){ String value=(String)obj; String strArr[]=value.split(","); if(strArr!=null && strArr.length==2){ Point point=new Point(); point.setX(Integer.parseInt(strArr[0])); point.setY(Integer.parseInt(strArr[1])); return point; } } return null; } }
package com.yangwei.test; import java.lang.reflect.InvocationTargetException; import java.util.Date; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; import org.junit.Test; import com.yangwei.model.DateConverter; import com.yangwei.model.Point; import com.yangwei.model.PointConverter; import com.yangwei.model.User; public class TestBeanUtil { @Test public void test01() { try { User u=new User(); //假设要为name设置值"zhangsan" String key="name"; String value="zhangsan"; //以前我们使用Method 调用它的invoke方法完成操作 //现在我们使用BeanUtils的copyProperty完成设值操作 BeanUtils.copyProperty(u, key, value); System.out.println(u.getName());//zhangsan //拷贝不认识的属性,也不会报错 BeanUtils.copyProperty(u, "yyy", value); /** * 完整拷贝一个对象,此时会有错误,因为它不知道将Date转为何种类型 * 日期是有很多中格式情况的,如 1977-10-10 1977/10/10等 * 此时,如何处理呢??? * 需要定义转换器 定义转换器的步骤: * 1, 创建一个类,实现Converter接口 * 2,重写convert方法,实现转换 * 3,在拷贝属性之前,注册转换器 */ ConvertUtils.register(new DateConverter(), Date.class); BeanUtils.copyProperty(u, "birth", "1988-11-20"); ConvertUtils.register(new PointConverter(), Point.class); BeanUtils.copyProperty(u, "point", "12,23"); User u2=new User(); BeanUtils.copyProperties(u2, u); System.out.println(u.getName()+u.getBirth()+u.getPoint()); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }
apache-beanutil工具类的使用的更多相关文章
- Apache Commons 工具类介绍及简单使用
转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...
- linkin大话数据结构--apache commons工具类
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动. 一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆ge ...
- Apache Commons 工具类简单使用
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于 ...
- BeanUtil工具类的使用
BeanUtils的使用 1.commons-beanutils的介绍 commons-beanutils是Apache组织下的一个基础的开源库,它提供了对Java反射和内省的API的包装,依赖内省, ...
- Apache Commons 工具类介绍及简单使用(转载)
原文链接 http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动 ...
- Java:Apache Commons 工具类介绍及简单使用
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. Commons简介 组件 功能介绍 commo ...
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- apache StringUtils 工具类
// org.apache.commons.lang3.StringUtils // 1.IsEmpty/IsBlank - checks if a String contains text 检查是否 ...
- apache ArrayUtils 工具类
org.apache.commons.lang3.ArrayUtils // 1.add():将给定的数据添加到指定的数组中,返回一个新的数组. int[] arr = { 1, 2, 3 }; in ...
- 03-封装BeanUtil工具类(javabean转map和map转javabean对象)
package com.oa.test; import java.beans.BeanInfo; import java.beans.IntrospectionException; import ja ...
随机推荐
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(一)概览
myRTSPClient主要可以分成3个部分: 1. RTSPClient用户接口层: 2. RTP 音视频传输解析层: 3. RTP传输层. "RTSPClient用户接口层": ...
- Java 中判断 JSONObject 对应的 VALUE 为空
目前发现有两种包.两种不一样的json包. 第一种情况是: json包是json-lib包是net.sf.json 怎样判断JSONObject返回的是字符串null还是null值. 研究源码发现.J ...
- 【Hadoop】HDFS的java客户端编写
项目使用了Maven Project 快速进行HDFS 客户端程序测试 客户端操作系统:win10 64位 JDK: 1.7.0_79 开发工具 :Eclipse Luna pom.xml < ...
- jQuery圣诞雪花
<script type="text/javascript"> $(function(){ var d="<div class='y_snow'> ...
- GHO2VMDK转换工具分享含VS2010源码
平常经常用到虚拟机,每次从gho转换为vmdk时都要输入cmd代码,觉得麻烦,自己动手做了个gho2vmdk转换工具,集成ghost32.exe文件,可以一键转换,省时省事.运行时会将ghost32. ...
- geotrellis使用(三十二)大量GeoTiff文件实时进行TMS服务
前言 在上一篇文章中我讲了如何直接将Geotiff文件发布为TMS服务,在其中只讲了单幅Geotiff的操作,其实单幅这种量级的数据对Geotrellis来说就是杀鸡焉用牛刀,Geotrellis针对 ...
- 深入浅出数据结构C语言版(17)——有关排序算法的分析
这一篇博文我们将讨论一些与排序算法有关的定理,这些定理将解释插入排序博文中提出的疑问(为什么冒泡排序与插入排序总是执行同样数量的交换操作,而选择排序不一定),同时为讲述高级排序算法做铺垫(高级排序为什 ...
- 搭建DNS服务
author:JevonWei 版权声明:原创作品 修改/var/named/下的数据库文件的数据时,需手动修改serial序列号 UDP协议53端口用于用户DNS查询,TCP协议53端口用于主从DN ...
- [转]Java se 7 最新特性研究(一)
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp81 从2006到现在等待了多年的jdk7终于发布了.这里将对它的一些 ...
- JS常用方法总结
1.javascript删除元素节点 IE中有这样一个方法:removeNode(),这个方法在IE下是好使的,但是在Firefox等标准浏览器中就会报错了 removeNode is not def ...