如何创建jooq自定义记录?

问题描述 投票:0回答:1

如何从现有的两个其他记录对象创建自定义jOOQ记录,即合并两个现有记录对象的属性。

例如:

CustomerRecord(id, name, surname), 
ProductRecord(id, customer_id, description)
SELECT * FROM Customer JOIN Product ON Customer.id = Product.customer_id;

在这样的查询之后,我将获得RecordImpl对象,并且我希望自定义一个可以访问两个表中的字段属性。

java sql jooq
1个回答
0
投票

有几种方法可以实现您的目标。

Use views

其中一个就是简单地创建一个视图:

-- Potentially disambiguate the ID (and other) columns
CREATE VIEW CustomerAndProducts AS
SELECT * FROM Customer JOIN Product ON Customer.id = Product.customer_id;

然后代码生成器将获取该视图并为您生成CustomerAndProductsRecord

Use your own CustomRecord

您可以通过扩展TableRecord来创建自己的org.jooq.impl.CustomRecord子类型,如下所示:https://www.jooq.org/doc/latest/manual/sql-building/queryparts/custom-queryparts

它们几乎像普通的TableRecord类型一样工作,并且可以拥有自己的一组getter / setter

Use any class you like

您不必使用记录。 jOOQ可以使用以下代码将您的结果提取到任何类(可能恰好是记录,见上文):

List<MyClass> list =
DSL.using(configuration)
   .select()
   .from(CUSTOMER)
   .join(PRODUCT)
   .on(CUSTOMER.ID.eq(PRODUCT.CUSTOMER_ID))
   .fetchInto(MyClass.class);

在上面的例子中,DefaultRecordMapper用于映射jOOQ的记录和你的类。 See its Javadoc for details

© www.soinside.com 2019 - 2024. All rights reserved.