java - ArrayList 迭代相同的数据

标签 java oracle jsp arraylist jstl

我尝试以 MVC 模式创建一个网络应用程序来显示来自数据库的数据

JSP:

<c:forEach var="pro" items="${list}">
            <tr>
           <td><c:out value="${pro.reqno}"></c:out></td>
           <td><c:out value="${pro.leave_Type}"></c:out></td>
           <td><c:out value="${pro.no_of_days}"></c:out></td>
           <td><c:out value="${pro.status}"></c:out></td>
           <td><c:out value="${pro.balanceUnits}"></c:out></td>
           <td><c:out value="${pro.totalUnits}"></c:out></td>
            </tr>
    </c:forEach>

小服务程序:

           ArrayList temp = summary.getSummary(objUsr);
           request.setAttribute("list", temp);
           RequestDispatcher rd = request.getRequestDispatcher("JSP/login-success.jsp");

DAO 类:

public ArrayList<LeaveSummary> getSummary(LeaveSummary objUsr) throws SQLException {
    PreparedStatement stmt = null;
    ArrayList<LeaveSummary> rowArray = new ArrayList<LeaveSummary>();
    ResultSet rs = null;
    try {
        LeaveSummary getValuesFromDb = new LeaveSummary();
        Connection con = ConnectionProvider.getCon();
        stmt = con.prepareStatement("SELECT * FROM create_request where username=?");
        stmt.setString(1, objUsr.getUser_name());
        rs = stmt.executeQuery();
        while (rs.next()) {
            getValuesFromDb.setReqno(rs.getInt(1));
            getValuesFromDb.setUser_name(rs.getString(2));
            getValuesFromDb.setNo_of_days(rs.getInt(4));
            getValuesFromDb.setLeave_Type(rs.getString(3));
            getValuesFromDb.setStatus(rs.getString(6));
            getValuesFromDb.setTotalUnits(rs.getInt(7));
            getValuesFromDb.setBalanceUnits(rs.getInt(8));
            rowArray.add(getValuesFromDb);
        }
    }
   catch(Exception e)
           {
       e.printStackTrace();
   }

数据库表:


1 san                  Casual                        1 sicks                pending                                                  10                                      9 
2 san                  Others                        2 Functional           pending                                                  10                                      8 

但它只打印第二行(即最近添加的行),我如何打印我表中的两行

最佳答案

创建一个新实例

LeaveSummary getValuesFromDb = new LeaveSummary(); 

在你的 while 循环中。您不是为数据库中的每条记录创建 LeaveSummary 的新实例。因此,每次循环结果集时都会重写同一个对象。这就是最后一条记录单独存在于列表中的原因。

关于java - ArrayList 迭代相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782867/

相关文章:

javascript - Jquery基本功能测试调用不起作用?

java - 如何分割所需格式的字符串?

java - 无法显示多个 JPanel

asp.net - DB 中的 Oracle 字符串大于 UI 中的

javascript - 如何使用jquery为div动态添加点击事件

java - 无法通过 java 邮件 API 发送电子邮件?

java - 无法使用线程池处理多个客户端,因为当我收到第二个客户端请求时,它正在挂起第一个线程

java - 尽管使用了正确的 Java 版本,但仍不受支持的主要版本和次要版本

oracle - 谁能告诉我 Oracle Enterprise Repository 是什么?

oracle - Grails错误-TNS:监听器当前不知道连接描述符中给出的SID