- Type Parameters:
- R- The cursor's record type
- All Superinterfaces:
- AutoCloseable,- Fields,- Formattable,- Iterable<R>
ResultSet. Unlike Result, data can only be accessed
 sequentially, using an Iterator, or the cursor's hasNext()
 and fetch() methods.
 
 Client code must close this Cursor in order to close the underlying
 PreparedStatement and ResultSet
 
The cursor can be consumed in two ways:
- Record by record: Such methods can be recognised by the term "Next" in
 the method name, e.g. fetchNext(int).
- Completely in one go: Such methods do not have the term "Next" in their
 method names, e.g. fetch().
 Note: Unlike usual implementations of Iterable, a Cursor
 can only provide one Iterator!
- Author:
- Lukas Eder
- 
Method SummaryModifier and TypeMethodDescriptionvoidclose()Explicitly close the underlyingPreparedStatementandResultSet.<X,A> X Reduce the execution results of this query using aCollector.fetch()Fetch all remaining records as a result.fetch(int number) Deprecated, for removal: This API element is subject to removal in a future version.<E> @NotNull List<E>fetch(RecordMapper<? super R, E> mapper) Fetch results into a custom mapper callback.<H extends RecordHandler<? super R>>
 HfetchInto(H handler) Deprecated, for removal: This API element is subject to removal in a future version.- 3.15.0 - [#11902] - UseIterable.forEach(Consumer)based methods, instead.<E> @NotNull List<E>Map resulting records onto a custom type.Map resulting records onto a custom record.Fetch the next record from the cursor.fetchNext(int number) Fetch the next couple of records from the cursor.<E> EfetchNext(RecordMapper<? super R, E> mapper) Fetch the next record into a custom mapper callback.<H extends RecordHandler<? super R>>
 HfetchNextInto(H handler) Deprecated, for removal: This API element is subject to removal in a future version.- 3.15.0 - [#11902] - UseIterable.forEach(Consumer)based methods, instead.<E> EfetchNextInto(Class<? extends E> type) Map the next resulting record onto a custom type.<Z extends Record>
 ZfetchNextInto(Table<Z> table) Map the next resulting record onto a custom record.Fetch the next record from the cursor.<E> @NotNull Optional<E>fetchNextOptional(RecordMapper<? super R, E> mapper) Fetch the next record into a custom mapper callback.<E> @NotNull Optional<E>fetchNextOptionalInto(Class<? extends E> type) Map the next resulting record onto a custom type.fetchNextOptionalInto(Table<Z> table) Map the next resulting record onto a custom record.fetchOne()Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNext()instead.<E> EfetchOne(RecordMapper<? super R, E> mapper) Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNext(RecordMapper)instead.<H extends RecordHandler<? super R>>
 HfetchOneInto(H handler) Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextInto(RecordHandler)instead.<E> EfetchOneInto(Class<? extends E> type) Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextInto(Class)instead.<Z extends Record>
 ZfetchOneInto(Table<Z> table) Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextInto(Table)instead.Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptional()instead.<E> @NotNull Optional<E>fetchOptional(RecordMapper<? super R, E> mapper) Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptional(RecordMapper)instead.<E> @NotNull Optional<E>fetchOptionalInto(Class<? extends E> type) Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptionalInto(Class)instead.fetchOptionalInto(Table<Z> table) Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptionalInto(Table)instead.booleanhasNext()Check whether this cursor has a next record.booleanisClosed()Check whether thisCursorhas been explicitly or "conveniently" closed.@NotNull RecordType<R>Get this cursor's row type.@Nullable ResultSetGet theCursor's underlyingResultSet.stream()Turn thisCursorinto aStream.Methods inherited from interface org.jooq.FieldsdataType, dataType, dataType, dataTypes, field, field, field, field, field, field, field, field, field, field, fields, fields, fields, fields, fields, fieldsRow, fieldStream, indexOf, indexOf, indexOf, type, type, type, typesMethods inherited from interface org.jooq.Formattableformat, format, format, format, format, format, format, format, format, formatChart, formatChart, formatChart, formatChart, formatChart, formatChart, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatCSV, formatHTML, formatHTML, formatHTML, formatInsert, formatInsert, formatInsert, formatInsert, formatInsert, formatInsert, formatJSON, formatJSON, formatJSON, formatJSON, formatJSON, formatJSON, formatXML, formatXML, formatXML, formatXML, formatXML, formatXML, intoXML, intoXML, intoXML, intoXMLMethods inherited from interface java.lang.IterableforEach, iterator, spliterator
- 
Method Details- 
recordTypeGet this cursor's row type.
- 
hasNextCheck whether this cursor has a next record.This will conveniently close the Cursor, after the lastRecordwas fetched.- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchFetch all remaining records as a result.This will conveniently close the Cursor, after the lastRecordwas fetched.The result and its contained records are attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetch@NotNull @Deprecated(forRemoval=true, since="3.10") @NotNull Result<R> fetch(int number) throws DataAccessException Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNext(int)instead.- Throws:
- DataAccessException
 
- 
fetchNextFetch the next couple of records from the cursor.This will conveniently close the Cursor, after the lastRecordwas fetched.The result and its contained records are attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Parameters:
- number- The number of records to fetch. If this is- 0or negative an empty list is returned, the cursor is untouched. If this is greater than the number of remaining records, then all remaining records are returned.
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchInto@Deprecated(forRemoval=true, since="3.15") @NotNull <H extends RecordHandler<? super R>> H fetchInto(H handler) throws DataAccessException Deprecated, for removal: This API element is subject to removal in a future version.- 3.15.0 - [#11902] - UseIterable.forEach(Consumer)based methods, instead.Fetch results into a custom handler callback.The resulting records are attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Parameters:
- handler- The handler callback
- Returns:
- Convenience result, returning the parameter handler itself
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchFetch results into a custom mapper callback.- Parameters:
- mapper- The mapper callback
- Returns:
- The custom mapped records
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchInto@NotNull <E> @NotNull List<E> fetchInto(Class<? extends E> type) throws DataAccessException, MappingException Map resulting records onto a custom type.This is the same as calling fetch().into(type). SeeRecord.into(Class)for more details- Type Parameters:
- E- The generic entity type.
- Parameters:
- type- The entity type.
- Throws:
- DataAccessException- if something went wrong executing the query
- MappingException- wrapping any reflection or data type conversion exception that might have occurred while mapping records
- See Also:
 
- 
fetchInto@NotNull <Z extends Record> @NotNull Result<Z> fetchInto(Table<Z> table) throws DataAccessException, MappingException Map resulting records onto a custom record.This is the same as calling fetch().into(table). SeeRecord.into(Class)for more detailsThe result and its contained records are attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Type Parameters:
- Z- The generic table record type.
- Parameters:
- table- The table type.
- Throws:
- DataAccessException- if something went wrong executing the query
- MappingException- wrapping any reflection or data type conversion exception that might have occurred while mapping records
- See Also:
 
- 
fetchOneDeprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNext()instead.- Throws:
- DataAccessException
 
- 
fetchOneInto@NotNull @Deprecated(forRemoval=true, since="3.10") <H extends RecordHandler<? super R>> H fetchOneInto(H handler) throws DataAccessException Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextInto(RecordHandler)instead.- Throws:
- DataAccessException
 
- 
fetchOne@Nullable @Deprecated(forRemoval=true, since="3.10") <E> E fetchOne(RecordMapper<? super R, E> mapper) throws DataAccessExceptionDeprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNext(RecordMapper)instead.- Throws:
- DataAccessException
 
- 
fetchOneInto@Nullable @Deprecated(forRemoval=true, since="3.10") <Z extends Record> Z fetchOneInto(Table<Z> table) throws DataAccessException, MappingException Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextInto(Table)instead.- Throws:
- DataAccessException
- MappingException
 
- 
fetchNextFetch the next record from the cursor.This will conveniently close the Cursor, after the lastRecordwas fetched.The resulting record is attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Returns:
- The next record from the cursor, or nullif there is no next record.
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchNextInto@Deprecated(forRemoval=true, since="3.15") @NotNull <H extends RecordHandler<? super R>> H fetchNextInto(H handler) throws DataAccessException Deprecated, for removal: This API element is subject to removal in a future version.- 3.15.0 - [#11902] - UseIterable.forEach(Consumer)based methods, instead.Fetch the next record into a custom handler callback.This will conveniently close the Cursor, after the lastRecordwas fetched.The resulting record is attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Parameters:
- handler- The handler callback
- Returns:
- Convenience result, returning the parameter handler itself
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchOneInto@Nullable @Deprecated(forRemoval=true, since="3.10") <E> E fetchOneInto(Class<? extends E> type) throws DataAccessException, MappingException Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextInto(Class)instead.- Throws:
- DataAccessException
- MappingException
 
- 
fetchNextIntoMap the next resulting record onto a custom type.This is the same as calling fetchOne().into(type). SeeRecord.into(Class)for more details- Type Parameters:
- E- The generic entity type.
- Parameters:
- type- The entity type.
- Throws:
- DataAccessException- if something went wrong executing the query
- MappingException- wrapping any reflection or data type conversion exception that might have occurred while mapping records
- See Also:
 
- 
fetchNextFetch the next record into a custom mapper callback.This will conveniently close the Cursor, after the lastRecordwas fetched.- Parameters:
- mapper- The mapper callback
- Returns:
- The custom mapped record
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchNextInto@Nullable <Z extends Record> Z fetchNextInto(Table<Z> table) throws DataAccessException, MappingException Map the next resulting record onto a custom record.This is the same as calling fetchOne().into(table). SeeRecord.into(Class)for more detailsThe resulting record is attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Type Parameters:
- Z- The generic table record type.
- Parameters:
- table- The table type.
- Throws:
- DataAccessException- if something went wrong executing the query
- MappingException- wrapping any reflection or data type conversion exception that might have occurred while mapping records
- See Also:
 
- 
fetchOptional@NotNull @Deprecated(forRemoval=true, since="3.10") @NotNull Optional<R> fetchOptional() throws DataAccessExceptionDeprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptional()instead.- Throws:
- DataAccessException
 
- 
fetchOptionalInto@NotNull @Deprecated(forRemoval=true, since="3.10") <E> @NotNull Optional<E> fetchOptionalInto(Class<? extends E> type) throws DataAccessException, MappingException Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptionalInto(Class)instead.- Throws:
- DataAccessException
- MappingException
 
- 
fetchOptional@NotNull @Deprecated(forRemoval=true, since="3.10") <E> @NotNull Optional<E> fetchOptional(RecordMapper<? super R, E> mapper) throws DataAccessExceptionDeprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptional(RecordMapper)instead.- Throws:
- DataAccessException
 
- 
fetchOptionalInto@NotNull @Deprecated(forRemoval=true, since="3.10") <Z extends Record> @NotNull Optional<Z> fetchOptionalInto(Table<Z> table) throws DataAccessException, MappingException Deprecated, for removal: This API element is subject to removal in a future version.- 3.10 - [#6363] - UsefetchNextOptionalInto(Table)instead.- Throws:
- DataAccessException
- MappingException
 
- 
fetchNextOptionalFetch the next record from the cursor.This will conveniently close the Cursor, after the lastRecordwas fetched.The resulting record is attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Returns:
- The next record from the cursor
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchNextOptionalInto@NotNull <E> @NotNull Optional<E> fetchNextOptionalInto(Class<? extends E> type) throws DataAccessException, MappingException Map the next resulting record onto a custom type.This is the same as calling fetchOne().into(type). SeeRecord.into(Class)for more details- Type Parameters:
- E- The generic entity type.
- Parameters:
- type- The entity type.
- Throws:
- DataAccessException- if something went wrong executing the query
- MappingException- wrapping any reflection or data type conversion exception that might have occurred while mapping records
- See Also:
 
- 
fetchNextOptional@NotNull <E> @NotNull Optional<E> fetchNextOptional(RecordMapper<? super R, E> mapper) throws DataAccessExceptionFetch the next record into a custom mapper callback.This will conveniently close the Cursor, after the lastRecordwas fetched.- Parameters:
- mapper- The mapper callback
- Returns:
- The custom mapped record
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
fetchNextOptionalInto@NotNull <Z extends Record> @NotNull Optional<Z> fetchNextOptionalInto(Table<Z> table) throws DataAccessException, MappingException Map the next resulting record onto a custom record.This is the same as calling fetchOne().into(table). SeeRecord.into(Class)for more detailsThe resulting record is attached to the original Configurationby default. UseSettings.isAttachRecords()to override this behaviour.- Type Parameters:
- Z- The generic table record type.
- Parameters:
- table- The table type.
- Throws:
- DataAccessException- if something went wrong executing the query
- MappingException- wrapping any reflection or data type conversion exception that might have occurred while mapping records
- See Also:
 
- 
streamTurn thisCursorinto aStream.- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
collectReduce the execution results of this query using aCollector.This works in the same way as calling the following code: cursor.stream().collect(collector);- Parameters:
- collector- The collector that collects all records and accumulates them into a result type.
- Returns:
- The result of the collection.
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
closeExplicitly close the underlyingPreparedStatementandResultSet.If you fetch all records from the underlying ResultSet, jOOQCursorimplementations will close themselves for you. Callingclose()again will have no effect.- Specified by:
- closein interface- AutoCloseable
- Throws:
- DataAccessException- if something went wrong executing the query
 
- 
isClosedboolean isClosed()Check whether thisCursorhas been explicitly or "conveniently" closed.Explicit closing can be achieved by calling close()from client code. "Convenient" closing is done by any of the other methods, when the last record was fetched.
- 
resultSetGet theCursor's underlyingResultSet.This will return a ResultSetwrapping the JDBC driver'sResultSet. Closing thisResultSetmay close the producingStatementorPreparedStatement, depending on your setting forResultQuery.keepStatement(boolean).Modifying this ResultSetwill affect thisCursor.- Returns:
- The underlying ResultSet. May benull, for instance when theCursoris closed.
 
 
- 
fetchNext(int)instead.