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 ...
随机推荐
- js通过添加随机数的方法,解决多张图片加载时由于缓存导致图片无法正确显示的问题
问题出现描述:当对列表中某个图片进行重新编辑时,提交后会发现图片列表仍会出现修改之前的图片,新图片并未覆盖. 问题出现原因:缓存问题. 解决办法:通过js方法,在每张图片路劲后面添加一个随机数,这样每 ...
- 【Java学习笔记之二十五】初步认知Java内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- HTML,CSS,JS之间的关系
HTML,CSS,JS之间的关系 本笔记是自己在浏览了各位前辈后拼凑总结下来的知识,供自己使用消化.后面会附上各种链接地址,尊重原创 最准确的网页设计思路是把网页分成三个层次,即:结构层(HTML). ...
- Sublime Text 2安装图解
Sublime Text 2安装图解.. ---------------- ---------------- ---------------- ---------------- ----------- ...
- Windows常用的一些DOS下的CMD命令整理
Windows常用的一些DOS下的CMD命令整理... -------------- 正斜杠--/////-----向右倒--网址正斜杠反斜杠--\\\\------向左倒--文件路径反斜杠 DOS命 ...
- 【渗透笔记】拿下某小H网的全过程
自从班上A片小王子的7个T资源被封了以后,本小白为造福全班同学,尝试拿下个小H网,先用webrobot搜某些只有小H网才会出现的关键词 本以为直接导出放御剑里跑就行了,然并软.于是用awvs扫了一下, ...
- pprint模块介绍
简介pprint模块 提供了打印出任何Python数据结构类和方法. 模块方法: 1.class pprint.PrettyPrinter(indent=1,width=80,depth=None, ...
- NPOI office 组件资料汇总 (excel, word)
POI 是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 的文件,支持的文件格式包括xls, doc, ppt等. NPOI 是POI的.net 版本. 最新 ...
- sizeof(void)有什么用
偶然发现在C中sizeof(void)是合法的,于是,对它的作用产生了疑问.查阅资料在GNU文档中发现如下解释: In GNU C, addition and subtraction operatio ...
- Spring-MVC开发步骤(入门配置)
Spring-MVC开发步骤(入门配置) Step1.导包 spring-webmvc Step2.添加spring配置文件 Step3.配置DispatcherServlet 在web.xml中: ...