zoukankan      html  css  js  c++  java
  • java jdbc的优化之BeanUtils组件

    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);

      方法3map数据拷贝到javabean  【注意:map中的key要与javabean的属性名称一致】

      BeanUtils.populate(adminMap, map);

     1     // 1:对javabean的基本操作
     2     @Test
     3     public void test1() throws Exception {
     4 
     5         // 创建User对象
     6         User user = new User();
     7 
     8         // a:BeanUtiles组件实现对象属性的拷贝
     9         BeanUtils.copyProperty(user, "userName", "张三");
    10         BeanUtils.setProperty(user, "age", 22);
    11         // 总结1: 对于基本数据类型,会自动进行类型转换
    12 
    13         // b:BeanUtiles组件实现对象的拷贝
    14         User newuser = new User();
    15         BeanUtils.copyProperties(newuser, user);
    16 
    17         // c:beanUtiles组件实现把map数据拷贝到对象中
    18         // 先创建个map集合,并给予数据
    19         Map<String, Object> maptest = new HashMap<String, Object>();
    20         maptest.put("userName", "lzl");
    21         maptest.put("age", 21);
    22         // 创建User对象
    23         User userMap = new User();
    24         BeanUtils.populate(userMap, maptest);
    25 
    26         // 测试:
    27         System.out.println(userMap);
    28     }

    1.3 实例日期类型的拷贝

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

     1 // 自定义日期类型转换器
     2     @Test
     3     public void Date1() throws Exception {
     4 
     5         // 模拟表单数据
     6         String name = "mark";
     7         String age = "22";
     8         String birth = "1994-09-09";
     9 
    10         // 1:创建对象
    11         User user = new User();
    12 
    13         // 2:注册日期转换器:自定义的
    14 
    15         ConvertUtils.register(new Converter() {
    16 
    17             @Override
    18             public Object convert(Class type, Object value) {
    19                 // 1:首先对进来的字符串数据进行判断
    20                 if (type != Date.class) {
    21                     return null;
    22                 }
    23                 if (value == null || "".equals(value.toString().trim())) {
    24                     return null;
    25                 }
    26             
    27                 try {
    28                     // 2:字符串转换为日期
    29                     // 格式化日期,定义
    30                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    31                     return sdf.parse(value.toString());
    32                 } catch (ParseException e) {
    33                     throw new RuntimeException(e);
    34                 }
    35             }
    36 
    37         }, Date.class);
    38     //这里使用对象的属性的拷贝,把所需要的变量(属性)拷贝到user对象中去
    39         BeanUtils.copyProperty(user, "userName", name);
    40         BeanUtils.copyProperty(user, "age", age);
    41         BeanUtils.copyProperty(user, "birthdayF", birth);
    42 
    43         System.out.println(user);
    44     }
  • 相关阅读:
    个人总结08
    npm快速入门
    Activity简介
    SELinux
    正则表达式学习笔记(二)表达式的匹配原理
    git学习笔记(一)
    使用VSFTPD传输文件
    正则表达式学习笔记(一)正则表达式入门
    Linux基础(一)磁盘分区
    Shell脚本笔记(九)数组
  • 原文地址:https://www.cnblogs.com/LZL-student/p/6032509.html
Copyright © 2011-2022 走看看