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 ...
随机推荐
- MongoDB索引(一) --- 入门篇:学习使用MongoDB数据库索引
这个系列文章会分为两篇来写: 第一篇:入门篇,学习使用MongoDB数据库索引 第二篇:进阶篇,研究数据库索引原理--B/B+树的基本原理 1. 准备工作 在学习使用MongoDB数据库索引之前,有一 ...
- Mysql中较为复杂的分组统计去重复值
这是我的代码: 前提是做了一个view:att_sumbase 首先分开统计每天的中午.下午饭点人数,这时需要分别去除中午和下午重复打卡的人.用了记录集的交,嵌套select的知识. 注意不能直接使用 ...
- MD5 in JAVA
using Apache Commons 需要引入org.apache.commons.codec.digest.DigestUtils这个包,pom.xml文件配置如下: <!-- https ...
- Windows7 中常用的一些DOS命令总结
Windows7 中常用的一些DOS命令总结... ----------------------- -------------------------------------------- dos,是 ...
- TensorFlow框架(4)之CNN卷积神经网络
1. 卷积神经网络 1.1 多层前馈神经网络 多层前馈神经网络是指在多层的神经网络中,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接的情况,如图 11所示. 图 11 对 ...
- Openfire分析之二:主干程序分析
引言 宇宙大爆炸,于是开始了万物生衍,从一个连人渣都还没有的时代,一步步进化到如今的花花世界. 然而沧海桑田,一百多亿年过去了-. 好复杂,但程序就简单多了,main()函数运行,敲个回车,一行Hel ...
- jquery的2.0.3版本源码系列(4):285-348行,extend方法详解
目录 1 . jquery extend的基本使用 通过285行的源码 jQuery.extend = jQuery.fn.extend = function() { ,extend方法要么是直接挂在 ...
- virtualbox下正确虚拟机修改设备名称
在学习大数据管理过程中,想要修改虚拟机的设备名称(因为名称太长),所以就直接在右上角的设置中找到详细设置,直接修改设备名称,结果启动Hadoop失败!!!! 后来参考网上问题解决弄好了,现在给出修改设 ...
- Java内存模型_基础
线程之间的通信机制有两种: 1.共享内存:线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式的通信. 2.消息传递:线程之间没有公共状态,线程之间必须发送消息来显示的进行通信 同步:是指程 ...
- 201521123091 《Java程序设计》第11周学习总结
Java 第十一周总结 第十一周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 4.课后阅读 1.本章学习总结 1.1 以你喜欢的方式(思维导图 ...