BeanUtils工具
1.1 简介
程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件。
BeanUtils组件, 作用是简化javabean的操作!
用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件!
使用BenUtils组件:
- 1. 引入commons-beanutils-1.8.3.jar核心包
- 引入日志支持包: commons-logging-1.1.3.jar
如果缺少日志jar文件,报错:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.beanutils.ConvertUtilsBean.(ConvertUtilsBean.java:157)
at org.apache.commons.beanutils.BeanUtilsBean.(BeanUtilsBean.java:117)
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)
at
1.2 实例, 基本用法
方法1: 对象属性的拷贝
BeanUtils.copyProperty(admin, "userName", "jack");
BeanUtils.setProperty(admin, "age", 18);
方法2: 对象的拷贝
BeanUtils.copyProperties(newAdmin, admin);
方法3: map数据拷贝到javabean中
【注意:map中的key要与javabean的属性名称一致】
BeanUtils.populate(adminMap, map);
例子
//1. 对javabean的基本操作@Testpublic void test1() throws Exception {// a. 基本操作Admin admin = new Admin();
// admin.setUserName("Jack");
// admin.setPwd("999");// b. BeanUtils组件实现对象属性的拷贝BeanUtils.copyProperty(admin, "userName", "jack");BeanUtils.setProperty(admin, "age", 18);// 总结1: 对于基本数据类型,会自动进行类型转换!// c. 对象的拷贝Admin newAdmin = new Admin();BeanUtils.copyProperties(newAdmin, admin);// d. map数据,拷贝到对象中Admin adminMap = new Admin();Map<String,Object> map = new HashMap<String,Object>();map.put("userName", "Jerry");map.put("age", 29);// 注意:map中的key要与javabean的属性名称一致BeanUtils.populate(adminMap, map);// 测试System.out.println(adminMap.getUserName());System.out.println(adminMap.getAge());}
1.3 实例, 日期类型的拷贝
需要注册日期类型转换器,2种方式参见下面代码:
public class App {//1. 对javabean的基本操作@Testpublic void test1() throws Exception {// a. 基本操作Admin admin = new Admin();
// admin.setUserName("Jack");
// admin.setPwd("999");// b. BeanUtils组件实现对象属性的拷贝BeanUtils.copyProperty(admin, "userName", "jack");BeanUtils.setProperty(admin, "age", 18);// 总结1: 对于基本数据类型,会自动进行类型转换!// c. 对象的拷贝Admin newAdmin = new Admin();BeanUtils.copyProperties(newAdmin, admin);// d. map数据,拷贝到对象中Admin adminMap = new Admin();Map<String,Object> map = new HashMap<String,Object>();map.put("userName", "Jerry");map.put("age", 29);// 注意:map中的key要与javabean的属性名称一致BeanUtils.populate(adminMap, map);// 测试System.out.println(adminMap.getUserName());System.out.println(adminMap.getAge());}//2. 自定义日期类型转换器@Testpublic void test2() throws Exception {// 模拟表单数据String name = "jack";String age = "20";String birth = " ";// 对象Admin admin = new Admin();// 注册日期类型转换器:1, 自定义的方式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;}try {// 字符串转换为日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.parse(value.toString());} catch (ParseException e) {throw new RuntimeException(e);}}},Date.class);// 把表单提交的数据,封装到对象中BeanUtils.copyProperty(admin, "userName", name);BeanUtils.copyProperty(admin, "age", age);BeanUtils.copyProperty(admin, "birth", birth);//------ 测试------System.out.println(admin);}//2. 使用提供的日期类型转换器工具类@Testpublic void test3() throws Exception {// 模拟表单数据String name = "jack";String age = "20";String birth = null;// 对象Admin admin = new Admin();// 注册日期类型转换器:2, 使用组件提供的转换器工具类ConvertUtils.register(new DateLocaleConverter(), Date.class);// 把表单提交的数据,封装到对象中BeanUtils.copyProperty(admin, "userName", name);BeanUtils.copyProperty(admin, "age", age);BeanUtils.copyProperty(admin, "birth", birth);//------ 测试------System.out.println(admin);}
}
1.4 应用
public class WebUtils {@Deprecatedpublic static <T> T copyToBean_old(HttpServletRequest request, Class<T> clazz) {try {// 创建对象T t = clazz.newInstance();// 获取所有的表单元素的名称Enumeration<String> enums = request.getParameterNames();// 遍历while (enums.hasMoreElements()) {// 获取表单元素的名称:<input type="password" name="pwd"/>String name = enums.nextElement(); // pwd// 获取名称对应的值String value = request.getParameter(name);// 把指定属性名称对应的值进行拷贝BeanUtils.copyProperty(t, name, value);}return t;} catch (Exception e) {throw new RuntimeException(e);}}/*** 处理请求数据的封装*/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);}}
}
BeanUtils工具相关推荐
- BeanUtils工具类,简化数据封装
login.html中form表单的action路径的写法 * 虚拟目录+Servlet的资源路径 BeanUtils工具类,简化数据封装 * 用于封装JavaBea ...
- BeanUtils工具的使用(转载)
原文章地址:https://www.cnblogs.com/vmax-tam/p/4159985.html BeanUtils工具 什么是BeanUtils工具 BeanUtils工具是一种方便我们对 ...
- BeanUtils工具类
BeanUtils工具类,简化数据封装 用于封装JavaBean的 JavaBean:标准的Java类 要求: 1. 类必须被public修饰 2. 必须提供空参的构造器 3. 成员变量必须使用pri ...
- 丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 在前几天的文章<为什么阿里巴巴禁止使用Apache Bean ...
- beanutils工具类_16 个超级实用的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- beanutils工具类_Apache Commons 工具类介绍及简单使用
来源:http://h5ip.cn/9xu3 Apache Commons 工具类大家都有用过,但是可能缺乏系统学习,只用到了一小部分功能,无法发挥极限的价值,肥朝用大白话说就是,一颗好白菜都让猪给拱 ...
- spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...
一.前言 基于spring-beans(4.1.4)的工具类org.springframework.beans.BeanUtils对注入spring对象按照Class实例化instantiateCla ...
- BeanUtils工具的使用
BeanUtils 属性拷贝 BeanUtils.copyProperties(a, b); 注意 在不同的包下面,拷贝顺序相反 org.springframework.beans.BeanUtils ...
- 十年后,这款优秀的工具终于给出了不开源的原因
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://mulanos.oschina.net/ ...
- BeanUtils 是用 Spring 的还是 Apache 的好?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | urlify.cn/vUfIry 前言 在我们实际项目开 ...
最新文章
- 在线代码格式化,在线JSON校验格式化
- 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
- 实践重于理论——创建一个监控程序探测WCF的并发处理机制
- FPGA篇(三)基于FPGA的几种排序算法
- 1787: [Ahoi2008]Meet 紧急集合
- Java Math Expression Engine
- 2440 linux文件写,添加yaffs2文件系统 - Linux2.6.39在S3C2440上的移植_Linux编程_Linux公社-Linux系统门户网站...
- 有钱人是怎么挣钱的?
- OpenSSF 获1000万美元投资,提升开源软件和软件供应链安全
- 自己动手写DB数据库框架(增)
- layui table 复选框数据_Python操作三大数据库 Mysql
- Android 开发者不得不面对的六个问题
- 低代码,想说爱你不容易
- oracle odi 目标数据存储: 临时目标数据存储未与连接关联,ODI知识模块--IKM Oracle Incremental Update...
- 升级计算机的图形卡和驱动程序,Win10更新显卡驱动程序后无法开机怎么办?解决方案...
- 【学习KubeEdge】
- 自定义容器实现类似Windows屏保功能
- 有谁知道iphone XR的“R”到底是什么意思?答案可能会让你们无奈
- 端端Clouduolc同步索引简述
- Hystrix组件学习(一)