SQL查询数据封装JavaBean对象_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > SQL查询数据封装JavaBean对象

SQL查询数据封装JavaBean对象

 2014/11/12 18:19:01  haoyuan2012  程序员俱乐部  我要评论(0)
  • 摘要:SQL查询数据封装JavaBean对象分类:JAVAJ2EE2013-06-1714:03548人阅读评论(0)收藏举报importjava.lang.reflect.Field;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.Date
  • 标签:Java 数据 SQL
SQL查询数据封装JavaBean对象
分类: JAVA J2EE 2013-06-17 14:03 548人阅读 评论(0) 收藏 举报
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;



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));
  }
}
发表评论
用户名: 匿名