当前位置:Gxlcms > 数据库问题 > JDBC--使用beanutils工具类操作JavaBean

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

时间:2021-07-01 10:21:17 帮助过:2人阅读

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

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

标签:

人气教程排行