EntitySequence
Represents a sequence of entity objects. As the name implies, the style and use pattern of Ktorm's entity sequence APIs are highly similar to kotlin.sequences.Sequence and the extension functions in Kotlin standard lib, as it provides many extension functions with the same names, such as filter, map, reduce, etc.
To create an EntitySequence, we can use the extension function sequenceOf:
val sequence = database.sequenceOf(Employees)
Now we got a default sequence, which can obtain all employees from the table. Please know that Ktorm doesn't execute the query right now. The sequence provides an iterator of type Iterator<Employee>
, only when we iterate the sequence using the iterator, the query is executed. The following code prints all employees using a for-each loop:
for (employee in sequence) {
println(employee)
}
This class wraps a Query object, and it’s iterator exactly wraps the query’s iterator. When an entity sequence is iterated, its internal query is executed, and the entityExtractor function is applied to create an entity object for each row.
Most of the entity sequence APIs are provided as extension functions, which can be divided into two groups:
Intermediate operations: these functions don’t execute the internal queries but return new-created sequence objects applying some modifications. For example, the filter function creates a new sequence object with the filter condition given by its parameter. The return types of intermediate operations are usually EntitySequence, so we can call other sequence functions continuously in chaining style.
Terminal operations: the return types of these functions are usually a collection or a computed result, as they execute the queries right now, obtain their results and perform some calculations on them. E.g. toList, reduce, etc.
For the list of sequence operations available, see the extension functions below.
Constructors
Properties
The function used to extract entity objects for each result row.
The SQL expression to be executed by this sequence when obtaining elements.
The internal query of this sequence to be executed, created by database and expression.
The ResultSet object of the internal query, lazy initialized after first access, obtained from the database by executing the generated SQL.
The source table from which elements are obtained.
The total records count of this query ignoring the pagination params.
The total records count of this query ignoring the pagination params.
Functions
Perform a tuple of aggregations given by aggregationSelector for all elements in the sequence, and return the aggregate results.
Perform an aggregation given by aggregationSelector for all elements in the sequence, and return the aggregate result.
Create a kotlin.sequences.Sequence instance that wraps this original entity sequence returning all the elements when being iterated.
Return a Map containing the elements from the given sequence indexed by the key returned from keySelector function applied to each element.
Return a Map containing the values provided by valueTransform and indexed by keySelector functions applied to elements of the given sequence.
Populate and return the destination mutable map with key-value pairs, where key is provided by the keySelector function applied to each element of the given sequence and value is the element itself.
Populate and return the destination mutable map with key-value pairs, where key is provided by the keySelector function and value is provided by the valueTransform function applied to elements of the given sequence.
Populate and return the destination mutable map with key-value pairs provided by transform function applied to each element of the given sequence.
Return a Map where keys are elements from the given sequence and values are produced by the valueSelector function applied to each element.
Populate and return the destination mutable map with key-value pairs for each element of the given sequence, where key is the element itself and value is provided by the valueSelector function applied to that key.
Return a sequence customizing the selected columns of the internal query.
Append all elements not matching the given predicate to the given destination.
Append all elements matching the given predicate to the given destination.
Return the first element, or throws NoSuchElementException if the sequence is empty.
Return the first element matching the given predicate, or throws NoSuchElementException if element was not found.
Return the first element, or null
if the sequence is empty.
Return the first element matching the given predicate, or null
if element was not found.
Append all elements yielded from results of transform function being invoked on each element and its index in the original sequence, to the given destination.
Perform the given action on each element, providing sequential index with the element.
Group elements of the original sequence by the key returned by the given keySelector function applied to each element and return a map where each group key is associated with a list of corresponding elements.
Group values returned by the valueTransform function applied to each element of the original sequence by the key returned by the given keySelector function applied to the element and returns a map where each group key is associated with a list of corresponding values.
Group elements of the original sequence by the key returned by the given keySelector function applied to each element and put to the destination map each group key associated with a list of corresponding elements.
Group values returned by the valueTransform function applied to each element of the original sequence by the key returned by the given keySelector function applied to the element and put to the destination map each group key associated with a list of corresponding values.
Create an EntityGrouping from the sequence to be used later with one of group-and-fold operations.
Return true
if the sequence has at lease one element.
Return the last element, or throws NoSuchElementException if the sequence is empty.
Return the last element matching the given predicate, or throws NoSuchElementException if no such element found.
Return the last element, or null
if the sequence is empty.
Return the last element matching the given predicate, or null
if no such element was found.
Customize the selected columns of the internal query by the given columnSelector function, and return a List containing the query results.
Customize the selected columns of the internal query by the given columnSelector function, and return a List containing the non-null results.
Customize the selected columns of the internal query by the given columnSelector function, and append non-null results to the given destination.
Customize the selected columns of the internal query by the given columnSelector function, and append the query results to the given destination.
Apply the given transform function to each element and its index in the original sequence and append only the non-null results to the given destination.
Apply the given transform function to each element and its index in the original sequence and append the results to the given destination.
Apply the given transform function to each element in the original sequence and append only the non-null results to the given destination.
Accumulate value starting with the first element and applying operation from left to right to current accumulator value and each element.
Return the single element, or throws an exception if the sequence is empty or has more than one element.
Return the single element matching the given predicate, or throws exception if there is no or more than one matching element.
Return single element, or null
if the sequence is empty or has more than one element.
Return the single element matching the given predicate, or null
if element was not found or more than one element was found.
Return a sequence sorting elements by multiple columns, in ascending or descending order. For example, sortedBy({ it.col1.asc() }, { it.col2.desc() })
.
Return a sequence sorting elements by a column, in ascending or descending order. For example, sortedBy { it.col.asc() }
Return a sequence sorting elements by the specific column in ascending order.
Return a sequence sorting elements by the specific column in descending order.
Append all elements to the given destination collection.
Return a MutableList containing all the elements of this sequence.
Return a MutableSet containing all the elements of this sequence.
Return a SortedSet containing all the elements of this sequence.
Return a copy of this EntitySequence with the expression modified.
Return a lazy Sequence that wraps each element of the original sequence into an IndexedValue containing the index of that element and the element itself.