zoukankan      html  css  js  c++  java
  • SQL查询数据封装JavaBean对象

    public static List getListBySql(String sql, Class cls){
      List list = new ArrayList();
      Connection connection =null;
      Statement stmt =null;
      ResultSet rs =null;
      try {
       connection = getConnection();
       stmt = connection.createStatement();
       rs = stmt.executeQuery(sql);
       while (rs.next()) {
        Object obj = getObject(rs, cls);
        list.add(obj);
       }
      }catch (Exception e) {
       e.printStackTrace();
       String sWord = " sql:" + sql;
       sWord += " 错误信息:" + e.getLocalizedMessage();
       PayMd5Utils.logResult(logpath,sWord);
       throw new RuntimeException("#执行出错:"+e.getLocalizedMessage());
      }finally{
       closeResultSet(rs);
       closeStatement(stmt);
       closeConnection(connection);
      }
      return list;
     }

     private static Object getObject(ResultSet rs, Class cls) throws SQLException, IllegalArgumentException, IllegalAccessException, InstantiationException {
      Object object = null;
      Field[] fields = cls.getDeclaredFields();
      ResultSetMetaData metaData = rs.getMetaData();
      int columnCount = metaData.getColumnCount();
      for (int i = 1; i <= columnCount; i++) {
       String columnName = metaData.getColumnName(i);
       Field field = getField(fields, columnName);
       if (field != null) {
        if (object==null) {
         object=cls.newInstance();
        }
        field.setAccessible(true);
        Object value = rs.getObject(field.getName());
        setFieldValue(object, value, field);
       }
      }
      return object;
     }

     private static Field getField(Field[] fields, String columnName) {
      for (Field field : fields) {
       if (columnName.toUpperCase().equals(field.getName().toUpperCase())) {
        return field;
       }
      }
      return null;
     }

     private static void setFieldValue(Object obj, Object value, Field field)
       throws IllegalArgumentException, IllegalAccessException {
      if (value == null) {
       return;
      }
      if (field.getType() == Long.class) {
       field.set(obj, StringUtil.toLong(value));
      } else if (field.getType() == Double.class) {
       field.set(obj, StringUtil.toDouble(value));
      } else if (field.getType() == Integer.class) {
       field.set(obj, StringUtil.toInteger(value));
      } else if (field.getType() == Date.class) {
       field.set(obj, new Date());
      } else {
       field.set(obj, StringUtil.toString(value));
      }
     }

  • 相关阅读:
    最新 蓝鲸人java校招面经 (含整理过的面试题大全)
    最新 上海轻轻java校招面经 (含整理过的面试题大全)
    最新 苏州朗动java校招面经 (含整理过的面试题大全)
    最新 医渡云java校招面经 (含整理过的面试题大全)
    变量的自动类型转换和强制类型转换(day01_10)
    java的数据类型(day01_09)
    常用的dos命令操作(day01_03)
    1.镜像-虚拟光驱-光驱
    Spring基于配置文件的方式来配置AOP
    Spring-AOP(切面的优先级&&&重用切点表达式)
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3141125.html
Copyright © 2011-2022 走看看