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 ...
随机推荐
- 7.31.2 this关键字
this用在所有方法中: 用来区分局部变量和成员变量的名字二义性! 如:在set方法中这样写:name = name; 则java会遵循"谁近谁优先"的规则,会给局部变量赋值 ...
- python-opencv在有噪音的情况下提取图像的轮廓
对于一般的图像提取轮廓,这篇博文介绍了一个很好的方法,但是对于有噪声的图像,并不能很好地捕获到目标物体. 比如对于我的鼠标,提取的轮廓效果并不好,因为噪声很多: 所以本文增加了去掉噪声的部分. 首先加 ...
- 2015苏州大学ACM-ICPC集训队选拔赛(3)题解
第三次校赛链接:快戳我 1001 考虑前半组数,我们只需要标记每个数出现的次数,再加上这个数之前的数出现的次数,即为这个数在m次操作中总共需要翻转的次数(即求前缀和),再根据翻转的奇偶性判断最后这个位 ...
- java se之File类
遍历某个目录路径下的所有文件并打印输出: package com.led.file; import java.io.File; public class File_List { public stat ...
- 题目1522:包含min函数的栈
#include <iostream> #include <cstdio> #include <stack> using namespace std; int ma ...
- 基于.netstandard的权限控制组件
基于.netstandard的权限控制组件 Intro 由于项目需要,需要在 基于 Asp.net mvc 的 Web 项目框架中做权限的控制,于是才有了这个权限控制组件. 项目基于 .NETStan ...
- if 分支语句
写在<script></script>里面. if(判断条件){满足条件时要执行的语句} else{不满足条件时要执行的语句} 三元运算:var x = 判断条件?值1:值2: ...
- 【BUG】插入或者更新超过限制后写入数据库失败
Error Code: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your ...
- MySQL存储引擎中的MyISAM和InnoDB区别
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- 学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...