JDBC--使用beanutils工具类操作JavaBean

1、在JavaEE中,Java类的属性通过getter,setter来定义;

2、可使用BeanUtils工具包来操作Java类的属性:

--Beanutils是由Apache公司开发,能够方便对Bean类进行简便的操作

--涉及到的包:

(1)   BeanUtils相关包

commons-beanutils-1.8.3.jar

commons-beanutils-1.8.3-javadoc.jar

commons-beanutils-1.8.3-javadoc.jar

commons-beanutils-bean-collections-1.8.3.jar

commons-beanutils-core-1.8.3.jar

(2)   Logic4j相关包

commons-logging.jar

3、使用举例:

Bean类Customer:

public class Customer {

    private int id;
    private String name;
    private Date birth;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Customer(int id, String name, Date birth) {
        super();
        this.id = id;
        this.name = name;
        this.birth = birth;
    }

    public Customer() {
    }
}

使用BeanUtils的setProperty()和getProperty()方法设置和获取属性:

public void testBeanUtils() throws Exception{
    Customer customer = new Customer();
    //设置customer的name属性
    BeanUtils.setProperty(customer, "name", "Bob");
    System.out.println(customer);
    //获取customer的属性值
    String name = (String)BeanUtils.getProperty(customer, "name");
    System.out.println(name);
}

4、在JDBC中,当我们在编写DAO中的通用方法来进行查询时,可以使用BeanUtils类来为属性赋值(第32行):

 1 public <T> T get(Class<T> clazz, String sql, Object ...args){
 2     T entity = null;
 3     Connection conn = null;
 4     PreparedStatement ps = null;
 5     ResultSet rs = null;
 6     try{
 7         conn = DAO.getConnection();
 8         ps = conn.prepareStatement(sql);
 9         for(int i = 0; i < args.length; i++){
10             ps.setObject(i + 1, args[i]);
11         }
12
13         rs = ps.executeQuery();
14         Map<String, Object> map = new HashMap<String, Object>();
15         ResultSetMetaData rsmd = rs.getMetaData();
16
17         if(rs.next()){
18             for(int i = 0; i < rsmd.getColumnCount(); i++){
19                 String columnLabel = rsmd.getColumnLabel(i + 1);
20                 Object columnValue = rs.getObject(columnLabel);
21
22                 map.put(columnLabel, columnValue);
23             }
24         }
25
26         if(map.size() > 0){
27             entity = clazz.newInstance();
28             for(Map.Entry<String, Object> entry : map.entrySet()){
29                 String fieldName = entry.getKey();
30                 Object value = entry.getValue();
31                 //使用BeanUtils工具类来为属性赋值
32                 BeanUtils.setProperty(entity, fieldName, value);
33                 /**使用反射的方式为属性赋值
34                 Field field = clazz.getDeclaredField(key);
35                 field.setAccessible(true);
36                 field.set(entity, value);*/
37             }
38             return entity;
39         }
40
41     }catch(Exception e){
42         e.printStackTrace();
43     }finally{
44         if(rs != null){
45             try {
46                 rs.close();
47             } catch (SQLException e) {
48                 e.printStackTrace();
49             }
50         }
51         if(ps != null){
52             try {
53                 ps.close();
54             } catch (SQLException e) {
55                 e.printStackTrace();
56             }
57         }
58         if(conn != null){
59             try {
60                 conn.close();
61             } catch (SQLException e) {
62                 e.printStackTrace();
63             }
64         }
65     }
66     return entity;
67 }

(1)  
BeanUtils相关包

commons-beanutils-1.8.3.jar

commons-beanutils-1.8.3-javadoc.jar

commons-beanutils-1.8.3-javadoc.jar

commons-beanutils-bean-collections-1.8.3.jar

commons-beanutils-core-1.8.3.jar

(2)  
Logic4j相关包

commons-logging.jar

时间: 2024-10-21 13:55:06

JDBC--使用beanutils工具类操作JavaBean的相关文章

java学习--基础知识进阶第十三天--反射机制的概述和字节码对象的获取方式、反射操作构造方法、成员方法、成员属性、JavaBean的概述&amp;BeanUtils的使用、自定义BeanUtils工具类

今日内容介绍 u 反射机制的概述和字节码对象的获取方式 u 反射操作构造方法.成员方法.成员属性 u JavaBean的概述&BeanUtils的使用 u 自定义BeanUtils工具类 第1章 反射机制概述.字节码对象的获取方式.反射操作构造方法.成员方法.成员属性 1.1 反射机制的概述和字节码对象的获取方式 1.1.1 反射介绍 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法        这种动态获取的以及动

BeanUtils工具类的使用

用来将客户端发送过来的数据封装到javaBean中的一个工具类 是apache研发的,需要导入 commons-logging-1.1.1.jar commons-beanutils-1.8.3.jar 使用步骤 先获取到表单的数据 request.getParameterMap(); 创建要封装数据的JavaBean User user = new User(); 使用BeanUtils工具类封装数据 BeanUtils.populate(user, map); 原文地址:http://blo

Java 之 BeanUtils 工具类

在上一个用户登录案例中,当从浏览器接收参数后,还需要创建 JavaBean 类,对其的属性每一项赋值,如果属性少,可以手动完成,但是当属性非常多,这时就发现非常不方便,在这里提供一个可以封装 JavaBean 的工具类. 这里的每一项都需要手动赋值,比较麻烦. BeanUtils 工具类,简化数据封装:用于封装 JavaBean的. JavaBean :标准的Java类 要求: ① 类必须被 public 修饰 ② 必须提供空参的构造器 ③ 成员变量必须使用 private 修饰 ④ 提供公共的

BeanUtils工具类,简化数据封装

BeanUtils工具类,简化数据封装 * 用于封装JavaBean的 导包; commons-beanutils-1.8.0.jar 1. JavaBean:标准的Java类 1. 要求: 1. 类必须被public修饰 2. 必须提供空参的构造器 3. 成员变量必须使用private修饰 4. 提供公共setter和getter方法 2. 功能:封装数据 2. 概念: 成员变量: 属性:setter和getter方法截取后的产物 例如:getUsername() --> Username--

JDBC : 使用DBUtils 工具类

所需jar包 : commons-dbutils-1.6.jar DbUtils类  1.DbUtils :提供如关闭连接.装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的.主要方法如下: -public static void close(-) throws java.sql.SQLException: DbUtils类提供了三个重载的关闭方法.这些方法检查所提供的参数是不是NULL,如果不是的话,它们就关闭Connection.Statement和ResultSet. -pu

jdbc连接用工具类

封装的是链接部分和关流部分 mysql8.0.13 public class JDBCUtils { private JDBCUtils(){} private static Connection con; static{ try { Class.forName("com.mysql.jdbc.Driver"); //2获得连接 对象 String url ="jdbc:mysql://localhost:3306/rwx?useSSl=false&serverTim

JDBC连接Oracle工具类

import java.sql.*;import java.util.ResourceBundle; /** * jdbc工具类,负责: * 1. 加载/注册数据库驱动程序 * 2. 获取数据库连接 * 3. 释放数据库资源(Connection, Statement, ResultSet) */public class JdbcUtil { private static final String DRIVER = getValue("jdbc.driver"); private st

Beanutils工具类,封装数据的三种方式,单例模式

org.apache.commons.beanutils.Beanutils; Beanutils setProperty(Object obj,String name,Object value) Object obj:被赋值的对象 String name:属性名 Object value:属性值 getProperty(Object obj,String name) 获取指定属性的属性值 Object obj: 对象 String name: 属性名 populate(Object bean,

一个加速产生 Spring JDBC RowMapper 的工具类

在使用Spring JdbcTemplate 时,编写 RowMapper 实在是一件累人的工作.于是我写了一个根据实体类产生 RowMapper 的工厂类 RowMapperFactory,来避免直接编写 RowMapper.RowMapperFactory 暂不支持枚举. 下面就是 RowMapperFactory: import org.springframework.jdbc.core.RowMapper; import java.lang.reflect.Method; import