簡體   English   中英

Jooq Result的自定義轉換器

[英]Custom converter for Jooq Result

實際上我們使用fetchInto()將結果轉換為對象列表。

例如:

Employee pojo匹配數據庫表是員工。

List<Employee> employeeList = sql.select(Tables.Employee)
                                 .from(Tables.EMPLOYEE).fetchInto(Employee.class);

同樣,我們如何轉換我們使用連接獲取的記錄?

例如:

Customer pojo匹配數據庫表是customer

Employee pojo匹配數據庫表是employee

sql.select(<<IWantAllFields>>).from(Tables.CUSTOMER)
                              .join(Tables.EMPLOYEE)
                              .on(Tables.EMPLOYEE.ID.equal(Tables.CUSTOMER.EMPLOYEE_ID))
                              .fetchInto(?);

要從連接的表源中選擇所有字段,只需選擇“none”:

Result<Record> result =
sql.select().from(Tables.CUSTOMER)
            .join(Tables.EMPLOYEE)
            .on(...)
            .fetch();

然后,jOOQ將對已知的表源進行內省並為您生成所有列引用。 創建POJO關系的一種方法是使用各種Result.intoGroups()方法之一。 例如:

Map<Integer, List<Customer>> map =
result.intoGroups(CUSTOMER.EMPLOYEE_ID, Customer.class);

這將生成每個EMPLOYEE_ID值的List<Customer> pojos的映射。

旁注:與調用DefaultRecordMapper任何映射操作一樣,當JOIN操作產生兩次相同的列名時,映射可能無法按預期工作(例如CUSTOMER.IDEMPLOYEE.ID ) - 因為DefaultRecordMapper沒有'知道特定列來自哪個表。

對於更復雜的映射,您應該實現自己的RecordMapperProvider

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM