求助!调用存储过程返回结果集问题

CallableStatement proc = conn.prepareCall("{call p_vehicle_opr.departlist_java(?,?,?,?,?)}");
proc.registerOutParameter(1, OracleTypes.CURSOR);
proc.setInt(2, 0);
proc.setInt(3, 0);
proc.setString(4, " and CompanyId = '" + CompanyId + "'"); // 条件
proc.registerOutParameter(5, OracleTypes.VARCHAR);
proc.execute();
ResultSet rs = (ResultSet) proc.getObject(1);
String totalpage = (String) proc.getObject(8);
while (rs.next()) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("DriverName", rs.getString("FULl_NAME"));
map.put("DriverMobilePhone", rs.getString("Driver_MobilePhone"));
map.put("DriversOwnershipText", rs.getString("Drivers_Ownership"));
list.add(map);
}

获取结果集的时候,返回的rs需要手动去getString获取数据库的对应字段值。

假设数据库查询的结果有30个字段,这里就要写30个,有更好的办法可以直接将所有的字段自动获取不用手动来写吗?


评论区

zhangtianxiao

2019-06-18 11:02

参考com.jfinal.plugin.activerecord.dialect.Dialect#buildRecordList

请问额qwe

2019-06-18 14:12

不知这个方法对你有没有用
private static List convertList(ResultSet rs) throws SQLException {
List list = new ArrayList<>();
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
while (rs.next()) {
Map rowData = new HashMap<>();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnLabel(i), rs.getObject(i));
}
list.add(rowData);
}
return list;
}

热门反馈

扫码入社