栏目:Java Web(<--点此查看更多)Java Web 开发相关技术及框架,JSP|Servlet|Javabean|SSH|EJB|HTML|CSS|JavaScript等
  • 将数据库查询结果显示到JSP页面上 List+Map

  • Thu Sep 06 11:09:30 CST 2012 编程者 我要收藏(...) 评论 ...
  • List+Map不使用实体对象将数据库查询结果显示到页面上。通过JDBC ResultSet 可获取查询结果(存在于数据库缓冲区内),但在Statement或Connection关闭后,ResultSet即不可用。因此需要一种方式取出所有查询结果并传递至JSP页面。
  • 背景:
    需要将数据库查询结果在JSP中一列表的方式显示。
    问题:
    通过JDBC ResultSet 可获取查询结果(存在于数据库缓冲区内),但在Statement或Connection关闭后,ResultSet即不可用。因此需要一种方式取出所有查询结果并传递至JSP页面。
    解决方法:
    遍历ResultSet取出所有数据封装进Collection。
    具体做法:
    1. 生成一个List对象(List list = new ArrayList());
    2. 生成一个Map对象(Map map = new HashMap())。使用Map封装一行数据,key为各字段名,value为对应的值。(map.put(“USER_NAME”,rs.getString(“USER_NAME”));
    3. 将第2步生成的Map对象装入第1步的list对象中(list.add(map););
    4. 重复2,3步直到ResultSet遍历完毕
    在com.taiping.life.util.DBUtil.resultSetToList(ResultSet rs)方法中已经实现了上述过程(所有列名均使用大写),可参考使用。
    示例代码:
    // 查询数据库部分代码
    import com.taiping.life.util.DBUtil;

    Connection conn = DBUtil.getConnection();
    PreparedStatement pst = null;
    ResultSet rs = null;
    try{
         String sql = “select emp_code,real_name from t_employee where organ_id=?”;
         pst = conn.preparedStatement(sql);
         pst.setString(1,”101”);
         rs=pst.executeQuery();
         List list = DBUtil.resultSetToList(ResultSet rs);
         rs.close();
         rst.close();
         return list;
    }finally{
        DBUtil.close(rs,pst,conn);
    }

    request.setAttribute(“resultList”,list);

    // JSP 方式显示
    <%=rowData.get(“USER_NAME”)%>
    // 标准标签方式显示
    <ul class="maxnew_list">
    <c:forEach items="${resultList}" var="emp">
    <li>${emp.EMP_CODE } -- ${emp.REAL_NAME }</li></c:forEach>
    </ul>
    适用场合:
    适用于多条查询语句或需要对查询结果进行处理的情况。
  • 信息来源:http://bianchengzhe.com (举报这篇文章)
  • 好评(...) 中评(...) 差评(...)