sql 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));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值