All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.dreampie.orm.BaseBuilder Maven / Gradle / Ivy

There is a newer version: 1.3.0.RELEASE
Show newest version
package cn.dreampie.orm;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by ice on 14-12-30.
 */
public class BaseBuilder {
//  private static final Logger logger = Logger.getLogger(BaseBuilder.class);

  public static  List build(ResultSet rs, Class modelClass, DataSourceMeta dataSourceMeta, TableMeta tableMeta) throws SQLException, InstantiationException, IllegalAccessException {
    List result = new ArrayList();
    ResultSetMetaData rsmd = rs.getMetaData();
    int columnCount = rsmd.getColumnCount();
    String[] labelNames = new String[columnCount + 1];
    int[] types = new int[columnCount + 1];
    buildLabelNamesAndTypes(rsmd, labelNames, types);

    Base entity;
    Object value;

    while (rs.next()) {
      if (Record.class.isAssignableFrom(modelClass)) {
        entity = new Record(tableMeta);
      } else {
        entity = modelClass.newInstance();
      }
      for (int i = 1; i <= columnCount; i++) {
        value = rs.getObject(i);
        entity.init(labelNames[i], value);
      }
      result.add((T) entity);
    }
    return result;
  }

  private static void buildLabelNamesAndTypes(ResultSetMetaData rsmd, String[] labelNames, int[] types) throws SQLException {
    for (int i = 1; i < labelNames.length; i++) {
      labelNames[i] = rsmd.getColumnLabel(i);
      types[i] = rsmd.getColumnType(i);
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy