【问题标题】:Map join result into DTO将连接结果映射到 DTO
【发布时间】:2019-10-20 17:51:40
【问题描述】:

我开始将 JOOQ 与 DVD 租赁商店数据库(又名 sakila)一起使用。基本上,我想获取一个演员和他的角色(我创建的表)。到目前为止,我想出了这个:

public ActorDTO findByName(String name) {
        ResultSet actors = dsl.select()
                .from(Tables.ACTOR)
                .join(Tables.ROLE_ACTOR).on(Tables.ROLE_ACTOR.ACTOR_ID.equal(Tables.ACTOR.ACTOR_ID))
                .join(Tables.ROLE).on(Tables.ROLE.ID.equal(Tables.ROLE_ACTOR.ROLE_ID))
                .fetchResultSet();

        return null;
    }

我希望能够将一个演员及其角色提取到一个对象中:一个 DTO。我找到了这篇文章https://arnaudroger.github.io/blog/2017/03/02/jooq-one-to-many-without-dto.html,但我发现使用 sfm 的解决方案过于冗长,并且使用 Tuple 是不可能的,因为我更喜欢使用简单的 POJO。

理想情况下,我的 DTO 应该类似于:

您对获取具有关联联接的记录有何建议?

【问题讨论】:

    标签: jooq


    【解决方案1】:

    有使用DTO的版本直接看https://arnaudroger.github.io/blog/2017/02/27/jooq-one-to-many.html

    冗长?您是在谈论 Tuple2 还是映射器实例化?还是 .as() 为列起别名?

    【讨论】:

    • 详细我的意思是映射器实例化和使用 as() 使映射器工作
    • 很公平,有一张票可以避免 as,样本中的 2 个 as 也没有必要。我也在放一张票,如果我们得到查询,我们应该能够获得该字段并且可能能够自动获得密钥github.com/arnaudroger/SimpleFlatMapper/issues/690
    • 刚刚推送了 8.2.0 版本,它与 jooq 模型有更好的集成,减少了冗长 simpleflatmapper.org/2019/11/12/v8.2.0.html#selectquerymapper 可能想检查一下,没有更多的键或 as
    • 看起来很棒!我会在当天晚些时候试一试,然后告诉你。非常感谢您的努力
    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2021-01-14
    • 2020-04-08
    • 2019-07-25
    • 2022-01-11
    • 2020-12-08
    相关资源
    最近更新 更多