与jooq是否有通用的方式来“按ID选择”?

时间:2019-10-10 11:29:06

标签: java jooq

我对使用jooq很陌生,我正在尝试实现Java程序员喜欢在DAO /存储库中执行的常规CRUD操作。我有以下代码用于按ID选择记录:

public class JooqRepository<ID, E extends BaseObject<ID>, T extends Table<R>, R extends Record> {
...
  private final T table; // would be coming from constructor to concrete reference in the generated classes
...

  protected Optional<E> findById(ID id) {
    final TableField<R, ID> idField = (TableField<R, ID>) table.getIdentity().getField();
    return dsl.fetchOptional(table, idField.eq(id)).map(toEntity()); // conversion method omitted here
  }
...
}

我的问题是,首先该方法适用于所有类型的表/记录还是仅适用于使用身份/自动增量的表/记录?

如果我使用不具有此功能的DBMS(例如Oracle)怎么办?

如果表具有复合键怎么办?

最后:甚至建议以这种方式使用jooq还是我们应该为每个表显式设计专用查询?

1 个答案:

答案 0 :(得分:1)

虽然可以将jOOQ用作Spring存储库实现,但您也可以直接使用jOOQ的DAO support,其工作方式类似。主要区别在于jOOQ DAO是非操作辅助工具,不会将DDD用作建模范例,它们只是简化了每个表上最常见的CRUD操作。

您可以对生成的DAO进行子类化,以添加更多功能,并将其注入到诸如Spring的存储库之类的服务中。

相关问题