zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    n9多媒体不显示图片处理方法
    STM32全球唯一ID读取方法
    VS2008+QT+CYAPI开发USB程序问题
    QT对话框中show和exec的区别
    华硕T20信号差的解决办法
    使用JTAG方式配置EPCS芯片时显示容量不够的解决方法
    QT中使用中文
    MODBUS CRC16
    递归的四条基本法则
    Java代码混淆和加密Jocky
  • 原文地址:https://www.cnblogs.com/tengtao93/p/4982247.html
Copyright © 2011-2022 走看看