【问题标题】:Jooq - Order results from select with UpdatableRecordJooq - 使用 UpdatableRecord 从选择中订购结果
【发布时间】:2016-09-27 20:51:59
【问题描述】:

如何使用 UpdatableRecord 对查询结果进行排序来执行选择?

查看手册,例如,

create.fetch(BOOK, BOOK.PUBLISHED_IN.equal(1948))

如何添加 order by 子句?

我正在使用 Jooq 3.6.4

感谢您的帮助

更新:

我知道我可以使用,例如:

    for(UtenteRecord utenteRecord : 
        create.selectFrom(UTENTE).orderBy(UTENTE.LOGIN)){
    }

但它似乎可以在最后使用和不使用fetch(),为什么?

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    在数据库中排序

    只需写出SQL查询并使用selectFrom()返回UpdatableRecord

    DSL.using(configuration)
       .selectFrom(UTENTE)
       .orderBy(UTENTE.LOGIN)
       .fetch();
    

    旁注:为什么 foreach 循环中不需要 fetch()

    您已经注意到,您不需要在 foreach 循环中编写 fetch()

    for (UtenteRecord record : DSL.using(configuration)
                                  .selectFrom(UTENTE)
                                  .orderBy(UTENTE.LOGIN)) {
        ...
    }
    

    这是因为ResultQuery扩展了Iterable,当foreach loop调用Iterable.iterator()时,jOOQ会执行查询并返回Result.iterator

    I've just written a blog post to illustrate this more in detail

    使用客户端排序

    请注意,您也可以随时在客户端中对结果进行排序,但可能不建议这样做,因为您应该将尽可能多的操作推送到数据库中以帮助优化器:

    DSL.using(configuration)
       .fetch(UTENTE, somePredicate)
       .sortAsc(UTENTE.LOGIN);
    

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      相关资源
      最近更新 更多