[英]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.ID
和EMPLOYEE.ID
) - 因為DefaultRecordMapper
沒有'知道特定列來自哪個表。
對於更復雜的映射,您應該實現自己的RecordMapperProvider
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.