1. BeanUtils组件

1.1 简介

程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件。

  BeanUtils组件,  作用是简化javabean的操作!

用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件!

使用BenUtils组件:

  1. 引入commons-beanutils-1.8.3.jar核心包
  2. 引入日志支持包: commons-logging-1.1.3.jar

如果缺少日志jar文件,报错:

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:157)

at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:117)

at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)

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的基本操作
@Test
public void test1() throws Exception { // 创建User对象
User user = new User(); // a:BeanUtiles组件实现对象属性的拷贝
BeanUtils.copyProperty(user, "userName", "张三");
BeanUtils.setProperty(user, "age", 22);
// 总结1: 对于基本数据类型,会自动进行类型转换 // b:BeanUtiles组件实现对象的拷贝
User newuser = new User();
BeanUtils.copyProperties(newuser, user); // c:beanUtiles组件实现把map数据拷贝到对象中
// 先创建个map集合,并给予数据
Map<String, Object> maptest = new HashMap<String, Object>();
maptest.put("userName", "lzl");
maptest.put("age", 21);
// 创建User对象
User userMap = new User();
BeanUtils.populate(userMap, maptest); // 测试:
System.out.println(userMap);
}

1.3 实例:日期类型的拷贝

  需要注册日期类型转换器,2种方式参见下面代码:

 // 自定义日期类型转换器
@Test
public void Date1() throws Exception { // 模拟表单数据
String name = "mark";
String age = "22";
String birth = "1994-09-09"; // 1:创建对象
User user = new User(); // 2:注册日期转换器:自定义的 ConvertUtils.register(new Converter() { @Override
public Object convert(Class type, Object value) {
// 1:首先对进来的字符串数据进行判断
if (type != Date.class) {
return null;
}
if (value == null || "".equals(value.toString().trim())) {
return null;
} try {
// 2:字符串转换为日期
// 格式化日期,定义
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse(value.toString());
} catch (ParseException e) {
throw new RuntimeException(e);
}
} }, Date.class);
    //这里使用对象的属性的拷贝,把所需要的变量(属性)拷贝到user对象中去
BeanUtils.copyProperty(user, "userName", name);
BeanUtils.copyProperty(user, "age", age);
BeanUtils.copyProperty(user, "birthdayF", birth); System.out.println(user);
}

java jdbc的优化之BeanUtils组件的更多相关文章

  1. 15、Jdbc的优化(BeanUtils组件)

    Jdbc的优化! BeanUtils组件 自定义一个持久层的框架 DbUtils组件 案例优化 1. BeanUtils组件 1.1    简介 程序中对javabean的操作很频繁, 所以apach ...

  2. 对JDBC的优化,BeanUtils和DBUtils

    为了进一步简化jdbc的使用,就是用组件进一步的及优化 BeanUtils工具包,代替java本身蹩脚的javaBean,使对象的封装更加的简单易行 DBUtils工具包,是jdbc的操作更加的简单 ...

  3. Java BeanUtils 组件 使用

    1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils ...

  4. 35 个 Java 代码性能优化总结

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  5. Java的性能优化

    http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...

  6. Java 代码性能优化总结

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  7. Java代码性能优化总结

    代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...

  8. Java JDBC批处理插入数据操作

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  9. Java JDBC批处理插入数据操作(转)

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

随机推荐

  1. SQL Server-简单查询语句,疑惑篇(三)

    前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开始正 ...

  2. C# 获取Excel中的合并单元格

    C# 获取Excel中的合并单元格 我们在制作表格时,有时经常需要合并及取消合并一些单元格.在取消合并单元格时需要逐个查找及取消,比较麻烦.这里分享一个简单的方法来识别Excel中的合并单元格,识别这 ...

  3. 推荐13款javascript模板引擎

    javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...

  4. Azure Backup (3) 使用Azure备份服务,备份Azure虚拟机

    <Windows Azure Platform 系列文章目录> 本将介绍,如何使用Azure备份服务,备份Azure虚拟机. 我们先预先创建2台Windows VM (命名为LeiVM00 ...

  5. Node基础篇(模块和NPM)

    核心模块 核心模块的意义 如果只是在服务器运行JavaScript代码,意义并不大,因为无法实现任何功能(读写文件,访问网络). Node 的用处在于它本身还提供的一系列功能模块,用于与操作系统互动. ...

  6. Less使用心得

    初识less就被其函数式编程css深深吸引了,而函数式编写css带来的好处不言而喻,复用,复用,还是复用.话不多说下面简单介绍下个人使用less的心得 首先网上有很多less的安装教程,这边不多做介绍 ...

  7. 记录一次bug解决过程:resultType和手动开启事务

    一.总结 二.BUG描述:MyBatis中resultType使用 MyBatis中的resultType类似于入参:parameterType.先看IDCM项目中的实际使用案例代码,如下: // L ...

  8. PHP函数基础知识.png

  9. java多态的理解

    面向对象语言中的类有三个特征,封装.继承.多态.封装与继承很好理解,那什么是多态呢? 1.什么是多态? 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同 ...

  10. j2ee log4j集中式日志解决方案logpool-v0.2

    下一个小版本会进行清理. war包下载地址 http://pan.baidu.com/s/1nvGmORn