现在的SSH开发框架非常流行,使得大家都有点忘记了JDBC的用法。笔者在工作中刚好遇到一个场景,由于对性能有较高要求,并且尽可能采用轻量级的技术方案,最终选择了最原始的JDBC技术。
在功能模块开发的过程中,由于SQL是动态生成的,在获取结果集后要通过遍历ResultSet的列,将ResultSet转换为Map对象,在这里需要使用到结果集元数据类型。关键代码如下:
Map<String, Object> dataMap=new HashMap<String, Object>();
Statement st=conn.createStatement();
String sql="select * from BPM_table1";
ResultSet rs=st.executeQuery(sql);
if (rs.next()) {
ResultSetMetaData rsMeta=rs.getMetaData();
int columnCount=rsMeta.getColumnCount();
for (int i=1; i<=columnCount; i++) {
dataMap.put(rsMeta.getColumnLabel(i), rs.getObject(i));
}
}
要注意的是rsMeta.getColumnCount()这个方法,获取结果集列数,数字是从1开始的。