天天看点

Java - JDBC 结果集 ResultSet 转 List<Map> 类型,继而转 JSON 类型

尘封许久的

eclipse

上面有一个很

fuck

的项目,需要增加留言保存、查看功能。

想大多数玩家,应该工作后,基本都没直接用过

JDBC

吧?一般都是公司持久层有现成的一套接口。

JDBC 的 CRUD 执行查询时,结果集

ResultSet

List<Map>

继而转

JSON

返回给前端
/**
 * 查询所有留言
 * 
 * @return json
 */
public void findAllMsg() {
    JDBCUtil jdbcUtil = new JDBCUtil();
    jdbcUtil.connectDB();
    List<Map<Object, Object>> list = new ArrayList<>();
    String sql = "select * from guestbook order by msgdate desc";
    try {
        ResultSet rs = jdbcUtil.select(sql);
        ResultSetMetaData md = rs.getMetaData();// 获得结果集结构信息(元数据)
        int columnCount = md.getColumnCount();// ResultSet列数
        // ResultSet转List<Map>数据结构
        // next用于移动到ResultSet的下一行,使下一行成为当前行
        while (rs.next()) {
            Map<Object, Object> map = new HashMap<>();
            for (int i = ; i <= columnCount; i++) {// 遍历获取对当前行的每一列的键值对,put到map中
                // rs.getObject(i) 获得当前行某一列字段的值
                map.put(md.getColumnName(i).toLowerCase(), rs.getObject(i));
            }
            list.add(map);
            System.out.println("list:" + list);
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        jdbcUtil.close();
    }
    String data = "{\"msg\":" + JSONArray.fromObject(list) + " ,\"totalCount\":" + list.size() + "}";
    send(data);
}