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

  • 相关阅读:
    首页效果
    vue 资源精选
    webpack
    常用代码
    超炫效果
    TJ 大神 与 node
    fis webpack 原理对比
    前端自动化测试
    非常强的用户体验的网站功能
    蔡康永: 说话之道
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3141125.html
Copyright © 2020-2023  润新知