ArrayList 迭代相同的数据 [英] ArrayList iterates same data

查看:23
本文介绍了ArrayList 迭代相同的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在 MVC 模式中创建一个 Web 应用程序来显示来自 DB 的数据

I tried creating a web app in MVC pattern to display data from DB

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>

Servlet:

           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 的新实例.因此,每次循环结果集时都会重写相同的对象.这就是为什么只有最后一条记录存在于列表中.

in your while loop. You are not creating a new instance of LeaveSummary for every record in your database.so, the same object is rewritten everytime you loop your resultset. that's why that last record alone exists in the list.

这篇关于ArrayList 迭代相同的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆