我有一个String,它保存我正在解析为Integer的查询中的ID号的值。我需要一个FOR循环,每次查询中出现一个特定数字超过五次。我在JSP页面上显示此信息。 到目前为止,我有:
while (rs1.next()){
String TicketNumber = rs1.getString("XXXXX_XXXXX_NO");
String MUID = rs1.getString("XXXXXX_XXXX");
String Name = rs1.getString("XXXXXXX_XXXXX_NAME");
String LastName = rs1.getString("XXXXX_XXXX_NAME");
int PIDM = Integer.parseInt(MUID);
for ( int n = 0, n >= 5, n += 1 )
rs1是我正在查询的语句,我正在设置这些值,将MIUD解析为PIDM,但我不确定从那里开始。
答案 0 :(得分:1)
只需使用SQL在该区域提供的强大的aggregate functions:
SELECT muid, COUNT(muid) AS muid_count FROM ticket GROUP BY muid
与
结合使用Integer muid = resultSet.getInt("muid");
Integer muidCount = resultSet.getInt("muid_count");
或者,如果您真的对非聚合信息感兴趣,那么最好使用Map<Integer, Integer>
或更好Map<Integer, List<Ticket>>
,以便您可以立即在JSP中显示它JSTL c:forEach
。然后,您可以使用JSTL List<Ticket>
获取fn:length
的大小。
E.g。
<c:forEach items="${ticketMap}" var="ticketEntry">
MUID: ${ticketEntry.key}<br>
Ticket count: ${fn:length(ticketEntry.value)}<br>
All tickets:<br>
<c:forEach items="${ticketEntry.value}" var="ticket">
Number: ${ticket.number}<br>
Name: ${ticket.name}<br>
Lastname: ${ticket.lastName}<br>
</c:forEach>
<hr>
</c:forEach>
答案 1 :(得分:0)
使用地图计算每个号码出现的次数。
Map<Integer,Integer> map = new HashMap<Integer,Integer>()
对结果集中的每条记录执行此操作
Integer count = map.get(PIDM);
if( count == null )
map.put(PIDM, 1);
else
map.put(PIDM, count + 1);
然后,在查询完成后,循环查找5或更大的计数
for( Map.Entry<Integer,Integer> e : map.entrySet() )
{
if( e.getValue() > 5 )
{
// do something with e.getKey() which is the PIDM from above
}
}