Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11
RecordMapper
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
在一个更函数式的操作模式中,您可能希望编写回调函数,将 select 语句的结果映射到记录中,以便进行一些处理。这是 Spring 的 JdbcTemplate 中常见的数据访问模式,jOOQ 也提供了这种模式。使用 jOOQ,您可以实现自己的 org.jooq.RecordMapper
类,并将它们插入 jOOQ 的 org.jooq.ResultQuery
// Write callbacks to receive records from select statements List<Integer> ids = create.selectFrom(BOOK) .orderBy(BOOK.ID) .fetch() .map(BookRecord::getId); // Or more concisely, as fetch().map(mapper) can be written as fetch(mapper): create.selectFrom(BOOK) .orderBy(BOOK.ID) .fetch(BookRecord::getId); // Or using a lambda expression: create.selectFrom(BOOK) .orderBy(BOOK.ID) .fetch(book -> book.getId()); // Of course, the lambda could be expanded into the following anonymous RecordMapper: create.selectFrom(BOOK) .orderBy(BOOK.ID) .fetch(new RecordMapper<BookRecord, Integer>() { @Override public Integer map(BookRecord book) { return book.getId(); } });
org.jooq.Records
提供了一个替代实用程序,当使用 类型安全的 Record[N] 类型和构造函数引用时,该实用程序非常有用
// Use Java 16 record types as simple DTOs record Book (int id, String title) {} List<Book> books = create.select(BOOK.ID, BOOK.TITLE) .from(BOOK) .orderBy(BOOK.ID) .fetch(Records.mapping(Book::new));
您的自定义 RecordMapper
类型可以通过 jOOQ 的 POJO 映射 API 自动使用,方法是将 RecordMapperProvider 注入到您的 Configuration 中。
反馈
您对此页面有任何反馈吗? 我们很乐意听到!