帮助将 ArrayList 与我的结果集一起使用
Posted
技术标签:
【中文标题】帮助将 ArrayList 与我的结果集一起使用【英文标题】:help using an ArrayList with my resultSet 【发布时间】:2011-09-16 13:03:59 【问题描述】:我有一个每次都有不同数量的结果的结果集,需要在我的页面上多次使用。目前,我将我的结果存储在一个 ArrayList 中,并计划只循环遍历 arraylist。我不知道有多少行所以这是我到目前为止的:
while (result.next())
tmpTerms.add(term = (((result_data = result.getObject("val_internal_code"))==null || result.wasNull())?" ":result_data.toString()));
tmpTerms.add(desc = (((result_data = result.getObject("val_external_representation"))==null || result.wasNull())?" ":result_data.toString()));
tmpTerms.add(sorter = (((result_data = result.getObject("sorter"))==null || result.wasNull())?" ":result_data.toString()));
tmpTerms.add(sDate = (((result_data = result.getObject("sDate"))==null || result.wasNull())?" ":result_data.toString()));
好的,所以当我运行它时,系统会打印: 代码:
[2011SP, Spring 2011, 1, 11-15-2010, 2011SU, Summer 2011, 1, 01-15-2011, 2011FL, Fall 2011, 1, 04-01-2011, 2010Q2, CE Qtr 2 2010 Dec - Feb, 2, 08-01-2010, 2011Q3, CE Qtr 3 2011 Mar - May, 2, 11-01-2010, 2011Q4, CE Qtr 4 2011 Jun - Aug, 2, 02-01-2011, 2011Q1, CE Qtr 1 2011 Sep-Nov, 2, 05-01-2011]
我不知道这是否是正确的做法,但到目前为止它正在工作,所以我现在想要做的是使用我的 allTerms arrayList,并将它们分成几行,所以我想拆分每个4 个结果放在单独的行中。 (所以它将是 2011SP,Spring 2011, 1, 11-15-2010 作为一行,依此类推),接下来,我需要将这些结果传输到 html 页面的某些部分。所以例如:
<table class="t1">
<tr>
<td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1--></td>
</tr>
</table>
<table class="t2">
<tr>
<td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1 and a term of ....SU (where '....' is the year) --></td>
</tr>
</table>
【问题讨论】:
你好像忘记问问题了:) "所以我现在要做的是使用我的 allTerms arrayList,并将它们分成行,所以我想将每 4 个结果分成单独的行。(所以它会是 2011SP,2011 年春季, 1, 11-15-2010 作为一行等等),接下来,我需要将这些结果转移到 HTML 页面的某些部分。例如:“这基本上是我的问题.....抱歉不是以问题形式。我只是想弄清楚如何做到这一点 哎呀,我的错。我只是读了一部分。 BalusC 似乎已经回答了这个问题。 【参考方案1】:这并不完全正确。您需要创建一个表示单个实体的 Javabean 类(阅读:包含单个数据库行的所有列数据的类)。
例如
public class Term
private String code;
private String description;
private int sorter;
private Date date;
// Add/generate getters, setters, equals, hashcode and other boilerplate.
并按如下方式填充它:
List<Term> terms = new ArrayList<Term>();
// ...
while (resultSet.next())
Term term = new Term();
term.setCode(resultSet.getString("val_internal_code"));
term.setDescription(resultSet.getString("val_internal_representation"));
term.setSorter(resultSet.getInt("sorter"));
term.setDate(resultSet.getDate("sDate"));
terms.add(term);
// ...
request.setAttribute("terms", terms);
然后你可以使用JSTL/EL很好地访问它。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<table class="t1">
<tr>
<td>
<c:forEach items="$terms" var="term">
<c:if test="$term.sorter == 1">
$term.code, $term.description, $term.date
</c:if>
</c:forEach>
</td>
</tr>
</table>
<table class="t2">
<tr>
<td>
<c:forEach items="$terms" var="term">
<c:if test="$term.sorter == 1 and fn:endsWith(term.code, 'SU')">
$term.code, $term.description, $term.date
</c:if>
</c:forEach>
</td>
</tr>
</table>
另见:
Places where JavaBeans are used? Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern与问题无关,您遍历ResultSet
的方式并没有给我强烈的感觉,即数据模型已正确设计。确保您为其保存的数据使用正确的列类型。确保您在列上放置了正确的非空约束和键约束。我还会重新考虑列名,并尝试更加自我记录和一致。
【讨论】:
【参考方案2】:假设您的数据中有不同数量的列,我将为您提供一个不同于 @BalusC 优秀解决方案的解决方案。
如果您有不同数量的列,您可以选择使用键值数据结构的路线,即某种类型的 Map,然后将这些映射存储在 List 中。
ArrayList<HashMap<String, String>> rows = new ArrayList<HashMap<String,String>>();
while(resultSet.next())
HashMap<String, String> term = new HashMap<String, String>();
term.put("val_internal_code",resultSet.getString("val_internal_code"));
term.put("val_internal_representation", resultSet.getString("val_internal_representation"));
term.put("sorter",resultSet.getInt("sorter"));
term.put("date",resultSet.getDate("sDate"));
rows.add(term);
然后当你去打印你的数据时:
for(HashMap<String, String> row : rows)
for(String key : row.keySet())
System.out.println(row.get(key));
System.out.println("End of line");
【讨论】:
JSTL<c:forEach>
也吃地图:***.com/questions/1835683/…以上是关于帮助将 ArrayList 与我的结果集一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Photon Unity Networking 与我的自定义服务器一起使用?