原文章地址:https://www.cnblogs.com/vmax-tam/p/4159985.html
BeanUtils工具
什么是BeanUtils工具
BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。

BeanUtils工具一般可以方便javaBean的哪些操作?
1)beanUtils 可以便于对javaBean的属性进行赋值。

2)beanUtils 可以便于对javaBean的对象进行赋值。

3)beanUtils可以将一个MAP集合的数据拷贝到一个javabean对象中。

BeanUtils的使用
使用beanUtils按照以下步骤~

前提:约定前提: 参数名称 需要和javabean的属性名称保持一致!!!!

步骤一

导包:导入commons-beanutils-1.8.3 包

与 commons-logging-1.1.3 包

步骤二

写代码使用~下面就来演示下常见的用法

1)设置javaBean的参数

复制代码
@Test
public void test1() throws Exception
{
//先演示一下不用工具时的做法
//1.生成对象
Student s = new Student();

    /*2.通过set方法赋值s.setId(1);s.setName("VN");s.setAge(19);s.setClassID(5);s.setBirthday(new Date());用以上这种方法来给对象的属性赋值实在是太麻烦了,下面我们用BeanUtils来进行赋值*///1.得到javaBean的一个字节码对象Class clazz = Class.forName("com.vmaxtam.beanutiltest.Student");//2.生成该字节码的一个对象Object obj = clazz.newInstance();//4.注册一个日期格式转换器ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class);//3.使用工具对该对象进行赋值//注意: 对于基本数据类型,beanutils工具进行自动类型转换。把String自动转成Integer,Double,FloatBeanUtils.setProperty(obj, "id", "1");BeanUtils.setProperty(obj, "name", "VN");BeanUtils.setProperty(obj, "age", "19");BeanUtils.setProperty(obj, "classID", "5");//如果要使用特殊的日期类型,则String->Date 不能自动转换,这时候就要注册一个转换器BeanUtils.setProperty(obj, "birthday", "1996-06-06");System.out.println(obj);
}

复制代码

对比一下,我们发现,使用BeanUtils里赋值好像更麻烦。。。但这只是在这段代码中而已,运用BeanUtils上面代码的这个功能,

我们可以写出一个通用的方法,可以把请求中的参数拷贝到javaBean对象中!

复制代码
约定前提: 请求中的参数名称 需要和javabean的属性名称保持一致!!!!
public static T requestToBean(HttpServletRequest request , Class clazz)
{
//创建javaBean对象
Object obj=null;
try {
obj=clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}

    //得到请求中的每个参数Enumeration<String> enu = request.getParameterNames();while(enu.hasMoreElements()){//获得参数名String name = enu.nextElement();//获得参数值String value = request.getParameter(name);//然后把参数拷贝到javaBean对象中try {BeanUtils.setProperty(obj, name, value);} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}return (T)obj;
}

复制代码

上面这个方法是一个泛型方法,传不同的javaBean进去都可以从request中获取参数值。在一个工程较大的项目中,如果使用这个通用的方法,就能节省很多代码。

2)把一个javaBean的属性拷贝到另一个javaBean对象中

复制代码
@Test
public void test2() throws Exception
{
//1.生成对象
Student s1 = new Student();
Student s2 = new Student();

    //2.通过set方法赋值s1.setId(1);s1.setName("VN");//s1.setAge(19);//基本数据类型可以为null,null也能拷贝s1.setClassID(5);s1.setBirthday(new Date());//特殊类型不能为null//需求:把s1的属性值拷贝到S2中,注意参数的顺序BeanUtils.copyProperties(s2, s1);System.out.println(s1);System.out.println(s2);
}

复制代码

一句代码就完成拷贝了,不用像以前那样先用get()方法把s1的属性值拿出来,再用set()方法供给s2属性赋值

3)把一个map集合中的数据拷贝到javaBean中

复制代码
@Test
public void test3() throws Exception
{
//1.生成对象
Map

BeanUtils工具的使用(转载)相关推荐

  1. BeanUtils工具类,简化数据封装

     login.html中form表单的action路径的写法         * 虚拟目录+Servlet的资源路径 BeanUtils工具类,简化数据封装         * 用于封装JavaBea ...

  2. BeanUtils工具类

    BeanUtils工具类,简化数据封装 用于封装JavaBean的 JavaBean:标准的Java类 要求: 1. 类必须被public修饰 2. 必须提供空参的构造器 3. 成员变量必须使用pri ...

  3. 单元测试工具 BoundsChecker 【转载】

    单元测试工具 BoundsChecker [转载] BoundsChecker 是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误.BoundsChecker能检测的错误包括: ...

  4. 丢弃掉那些BeanUtils工具类吧,MapStruct真香!!!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 在前几天的文章<为什么阿里巴巴禁止使用Apache Bean ...

  5. beanutils工具类_16 个超级实用的 Java 工具类!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  6. beanutils工具类_Apache Commons 工具类介绍及简单使用

    来源:http://h5ip.cn/9xu3 Apache Commons 工具类大家都有用过,但是可能缺乏系统学习,只用到了一小部分功能,无法发挥极限的价值,肥朝用大白话说就是,一颗好白菜都让猪给拱 ...

  7. linux中awk工具的使用(转载)

    awk是一个非常好用的数据处理工具.相较于sed常常一整行处理,awk则比较倾向于一行当中分成数个"字段"处理,awk处理方式如下: $ awk '条件类型1{动作1} 条件类型2 ...

  8. APK反编译得工具总结(转载)

    Android反编译技术总结 转自UncleChen's Blog,作者:UncleChen 一.Apk反编译工具及其使用方法 1.原理 学习反编译之前,建议先学习一下Apk打包的过程,明白打包完成后 ...

  9. java做的一个将中文转换成Unicode码的工具类【转载】做个标记,明天研究下

    这两天在使用RBManager(一个开源工具,用于多国化字符转化)工具的时候觉得很不方便,有的时候只需要知道中文对应的unicode码是多少,不需要这么麻烦的操作,所以就自己写了一个工具,专门用于将中 ...

最新文章

  1. 我竟然用OpenCV实现了卡尔曼滤波
  2. 大雁蛋人工孵化的方法_大鹅繁殖有哪些方法,您了解吗?
  3. 卷积核尺寸如何选取呢?
  4. JQuery闭包,插件的写法
  5. IOS基础之使用UICollectionView纯代码创建
  6. 分区创建 linux_在 Intel NUC 上安装 Linux
  7. 程序员的自我救赎---4.2:消息中心讲解与应用
  8. html表格输入框怎么左移动,当我向CSS中的文本框添加边框时,HTML表单输入会移动...
  9. 如何使用SQL Server Reporting Services创建图像分类系统
  10. jpa 表注释和字段注释_JPA注释–Hibernate注释
  11. 1990-2000年事务处理流程图和数据流图试题分析
  12. vue webpack打包后图片路径错误的解决方法
  13. php日历天气预报下载安装手机桌面_手机桌面时钟日历天气
  14. Stubs和Mocks区别 (Stubs vs. Mocks)
  15. Url Rewrite Filter 3.2.0中文手册
  16. PVE使用USB蓝牙直通配置
  17. 计算机毕业论文怎样写系统的意义,毕业论文写作的目的意义及步骤-计算机论文...
  18. win11右键如何直接打开所有选项
  19. 深度学习模型的Android部署方法
  20. 【vscode】网易云音乐插件Please interact with the document first otherwise play() will failed解决方法

热门文章

  1. 神经网络基本原理简明教程-0-Python-Numpy库的点滴
  2. java五子棋实训训心得,java五子棋实习报告
  3. 幼儿园 c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据
  4. JAVA入门级教学之(方法-7)
  5. java try catch 例子_java try catch
  6. 照片识别出错_AI跨年龄人脸识别技术在跨年龄寻亲的应用简析
  7. python如何生成列表和元组数据_Python数据类型(列表和元组)
  8. 线性代数第九版pdf英文_斯坦福CS229机器学习课程的数学基础(线性代数)翻译完成...
  9. java数组设置结束_Java 数组最佳指南,快收藏让它吃灰
  10. 字母绝对值python怎么表示_【怎样求用字母表示的数的绝对值?】作业帮