有没有办法在Result<Record>中从jOOQ循环遍历<c:forEach>

这是getter方法:

public Vector<Map<String, String>> getUsers() {
    Factory sql = new Factory(Database.getInstance().connect(), SQLDialect.MYSQL);
    Result<Record> results = sql.select().from("users").fetch();

    Vector<Map<String, String>> v = new Vector<Map<String, String>>();
    for(Record item: results) {
        Map<String, String> m = new HashMap<String, String>();
        m.put("login", item.getValueAsString("login"));
        // other columns
        v.add(m);
    }
    return v;
}


这是视图:

<c:forEach var="u" items="${users}">
   ${u.login} <br />
</c:forEach>


有没有办法使我的getter方法变得更简单:

public Result<Record> getUsers() {
    Factory sql = new Factory(Database.getInstance().connect(), SQLDialect.MYSQL);
    reutrn sql.select().from("users").fetch();
}


但是如前所述,我不知道如何在<c:forEach>中循环遍历,或者是否不可能?

最佳答案

似乎您希望像记录一样对记录进行操作。这是使用jOOQ实现此目标的方法:

public List<Map<String, Object>> getUsers() {
  Factory sql = new Factory(Database.getInstance().connect(), SQLDialect.MYSQL);
  return sql.select().from("users").fetchMaps();
}


请在此处查看相关的Javadocs:


ResultQuery.fetchMaps()
Result.intoMaps()
Record.intoMap()

07-24 09:17