All versions: 3.11 | 3.10 | 3.9 | 3.8 | 3.7 | 3.6 | 3.5 | 3.4 | 3.3 | Development versions: 3.12 | Unsupported versions: 3.2 | 3.1 | 3.0 | 2.6

In a more functional operating mode, you might want to write callbacks that map records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own org.jooq.RecordMapper classes and plug them into jOOQ's org.jooq.ResultQuery:

// Write callbacks to receive records from select statements
List<Integer> ids =

// Or more concisely, as fetch().map(mapper) can be written as fetch(mapper):

// Or using a lambda expression:
      .fetch(book -> book.getId());
// Of course, the lambda could be expanded into the following anonymous RecordMapper:
      .fetch(new RecordMapper<BookRecord, Integer>() {
          public Integer map(BookRecord book) {
              return book.getId();

Your custom RecordMapper types can be used automatically through jOOQ's POJO mapping APIs, by injecting a RecordMapperProvider into your Configuration.

See also the manual's section about the RecordHandler, which provides similar features

The jOOQ Logo