BlockingExecutable
Executable provides a customizable execution mechanism for SQL statements within a transaction.
This interface allows implementing classes to define specific execution logic specific to JDBC and customize how the return value is handled. It is primarily used when fine-grained control over statement execution is required.
For the suspend alternative of this interface, see SuspendExecutable.
Usage Example:
open class BatchUpsertBlockingExecutable(
override val statement: BatchUpsertStatement
) : BatchInsertBlockingExecutable<BatchUpsertStatement>(statement) {
override fun prepared(transaction: JdbcTransaction, sql: String): JdbcPreparedStatementApi {
// We must return values from upsert because returned id could be different depending on insert or upsert happened
if (!currentDialect.supportsOnlyIdentifiersInGeneratedKeys) {
return transaction.connection.prepareStatement(sql, statement.shouldReturnGeneratedValues)
}
return super.prepared(transaction, sql)
}
}
The implemented Executable can be later used in the utility functions like Table.batchUpsert.
Parameters
The return type of the SQL execution result.
The type of SQL statement that is executed.
Inheritors
Properties
Functions
Executes the SQL statement directly in the provided transaction and returns the generated result, or null
if either no result was retrieved or if the transaction blocked statement execution.
Determines the exact way that an SQL statement is executed in a transaction and applies any necessary logic before returning the result generated by the executed statement.
Uses a transaction connection and an sql string representation to return a precompiled SQL statement, stored as an implementation of PreparedStatementApi.