我正在使用本机sql使用以下代码进行查询
private <T> List<T> executeNativeQuery(String queryString,
Map<String, Object> param, Class<T> clazz) {
Query query = entityManager.createNativeQuery(queryString);
if (param != null && param.size() > 0) {
for (Map.Entry<String, Object> entry : param.entrySet()) {
query.setParameter(entry.getKey(), entry.getValue());
}
}
List<T> resultList = query.getResultList();
return resultList;
}
Run Code Online (Sandbox Code Playgroud)
并获得以下数据库结果.
VendorName | IncidentID | IncidentStatus | IncidentDate
-------------------------------------------------------
XYZ | 100 | Open | 02-JUN-2011
ABC | 101 | Closed | 03-JUN-2011
MNP | 102 | Open | 01-JUN-2011
LPQ | 103 | Open | 01-APR-2011
Run Code Online (Sandbox Code Playgroud)
为了迭代这个结果,我正在使用以下方法
Iterator iter=resultList.iterator();
while (iter.hasNext()) {
Object[] result= (Object[]) iter.next();
System.out.println("Vendor Name-->" +result[0]);
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来遍历列表?
一个"更好的方式"(java 5+ for-each)实际上将使用迭代器转换为您所显示的内容,但语法更好:
for (Object[] result : resultList) {
// ...
Run Code Online (Sandbox Code Playgroud)
另一种"更好的方式"依赖于您知道列表大小的事实,并且您可以在for循环中使用计数器:
for (int i = 0; i < resultList.size(); i++) {
Object[] result = resultList.get(i);
// ... the rest ...
Run Code Online (Sandbox Code Playgroud)
总而言之,有几种方法可以迭代列表,但可以说有更好的方法:这是一个用例问题(如果你正在使用那个i计数器来处理其他事情或者你正在使用它)在iterator也从列表中删除一些元素),或者简单的味道(低层次的与语法糖的事情).
| 归档时间: |
|
| 查看次数: |
21203 次 |
| 最近记录: |