Package liquibase.executor.jvm
Class JdbcExecutor
- java.lang.Object
-
- liquibase.executor.AbstractExecutor
-
- liquibase.executor.jvm.JdbcExecutor
-
- Direct Known Subclasses:
SnowflakeJdbcExecutor
public class JdbcExecutor extends AbstractExecutor
Class to simplify execution of SqlStatements. Based heavily on Spring's JdbcTemplate.
Note: This class is currently intended for Liquibase-internal use only and may change without notice in the future
-
-
Field Summary
Fields Modifier and Type Field Description static String
ROWS_AFFECTED_SCOPE_KEY
static String
SHOULD_UPDATE_ROWS_AFFECTED_SCOPE_KEY
-
Fields inherited from class liquibase.executor.AbstractExecutor
database, resourceAccessor
-
Fields inherited from interface liquibase.plugin.Plugin
PRIORITY_DATABASE, PRIORITY_DEFAULT, PRIORITY_NOT_APPLICABLE, PRIORITY_SPECIALIZED
-
-
Constructor Summary
Constructors Constructor Description JdbcExecutor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
comment(String message)
Adds a comment to the database.Object
execute(liquibase.executor.jvm.CallableStatementCallback action, List<SqlVisitor> sqlVisitors)
Object
execute(liquibase.executor.jvm.StatementCallback action, List<SqlVisitor> sqlVisitors)
void
execute(SqlStatement sql)
void
execute(SqlStatement sql, List<SqlVisitor> sqlVisitors)
protected RowMapper
getColumnMapRowMapper()
Create a new RowMapper for reading columns as key-value pairs.String
getName()
Return the name of the Executorint
getPriority()
Return the Executor priorityprotected RowMapper
getSingleColumnRowMapper(Class requiredType)
Create a new RowMapper for reading result objects from a single column.Object
query(SqlStatement sql, liquibase.executor.jvm.ResultSetExtractor rse)
Object
query(SqlStatement sql, liquibase.executor.jvm.ResultSetExtractor rse, List<SqlVisitor> sqlVisitors)
List
query(SqlStatement sql, RowMapper rowMapper)
List
query(SqlStatement sql, RowMapper rowMapper, List<SqlVisitor> sqlVisitors)
int
queryForInt(SqlStatement sql)
Executes a query that is expected to return a scalar (1 row, 1 column).int
queryForInt(SqlStatement sql, List<SqlVisitor> sqlVisitors)
Applies a number of SqlVisitors to the sql query.List<Map<String,?>>
queryForList(SqlStatement sql)
Executes a given SQL statement and returns a List of rows.List
queryForList(SqlStatement sql, Class elementType)
List
queryForList(SqlStatement sql, Class elementType, List<SqlVisitor> sqlVisitors)
List<Map<String,?>>
queryForList(SqlStatement sql, List<SqlVisitor> sqlVisitors)
Applies a list of SqlVisitors to the SQL query, then executes the (possibly modified) SQL query and lastly, returns the list of rows.long
queryForLong(SqlStatement sql)
Executes a query that is expected to return a scalar (1 row, 1 column).long
queryForLong(SqlStatement sql, List<SqlVisitor> sqlVisitors)
Applies a number of SqlVisitors to the sql query.<T> T
queryForObject(SqlStatement sql, Class<T> requiredType)
Execute a query that is expected to return a scalar (1 row, 1 column).<T> T
queryForObject(SqlStatement sql, Class<T> requiredType, List<SqlVisitor> sqlVisitors)
Applies a number of SqlVisitors to the sql query.Object
queryForObject(SqlStatement sql, RowMapper rowMapper)
Object
queryForObject(SqlStatement sql, RowMapper rowMapper, List<SqlVisitor> sqlVisitors)
int
update(SqlStatement sql)
int
update(SqlStatement sql, List<SqlVisitor> sqlVisitors)
boolean
updatesDatabase()
-
Methods inherited from class liquibase.executor.AbstractExecutor
applyVisitors, execute, execute, modifyChangeSet, setDatabase, setResourceAccessor, validate
-
-
-
-
Field Detail
-
SHOULD_UPDATE_ROWS_AFFECTED_SCOPE_KEY
public static final String SHOULD_UPDATE_ROWS_AFFECTED_SCOPE_KEY
- See Also:
- Constant Field Values
-
ROWS_AFFECTED_SCOPE_KEY
public static final String ROWS_AFFECTED_SCOPE_KEY
- See Also:
- Constant Field Values
-
-
Method Detail
-
getName
public String getName()
Return the name of the Executor- Specified by:
getName
in interfaceExecutor
- Specified by:
getName
in classAbstractExecutor
- Returns:
- String The Executor name
-
getPriority
public int getPriority()
Return the Executor priority- Specified by:
getPriority
in interfaceExecutor
- Specified by:
getPriority
in classAbstractExecutor
- Returns:
- int The Executor priority
-
updatesDatabase
public boolean updatesDatabase()
-
execute
public Object execute(liquibase.executor.jvm.StatementCallback action, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
execute
public Object execute(liquibase.executor.jvm.CallableStatementCallback action, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
execute
public void execute(SqlStatement sql) throws DatabaseException
- Throws:
DatabaseException
-
execute
public void execute(SqlStatement sql, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
query
public Object query(SqlStatement sql, liquibase.executor.jvm.ResultSetExtractor rse) throws DatabaseException
- Throws:
DatabaseException
-
query
public Object query(SqlStatement sql, liquibase.executor.jvm.ResultSetExtractor rse, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
query
public List query(SqlStatement sql, RowMapper rowMapper) throws DatabaseException
- Throws:
DatabaseException
-
query
public List query(SqlStatement sql, RowMapper rowMapper, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
queryForObject
public Object queryForObject(SqlStatement sql, RowMapper rowMapper) throws DatabaseException
- Throws:
DatabaseException
-
queryForObject
public Object queryForObject(SqlStatement sql, RowMapper rowMapper, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
queryForObject
public <T> T queryForObject(SqlStatement sql, Class<T> requiredType) throws DatabaseException
Description copied from interface:Executor
Execute a query that is expected to return a scalar (1 row, 1 column). It is expected that the scalar can be cast into an object of type T.- Parameters:
sql
- The query to execute- Returns:
- An object of type T, if successful. May also return null if no object is found.
- Throws:
DatabaseException
- in case something goes wrong during the query execution
-
queryForObject
public <T> T queryForObject(SqlStatement sql, Class<T> requiredType, List<SqlVisitor> sqlVisitors) throws DatabaseException
Description copied from interface:Executor
Applies a number of SqlVisitors to the sql query. Then, executes the (possibly modified) query. The query is expected to return a scalar (1 row, 1 column). That scalar is expected to return a single value that can be cast into an object of type T.- Parameters:
sql
- The query to execute- Returns:
- An object of type T, if successful. May also return null if no object is found.
- Throws:
DatabaseException
- in case something goes wrong during the query execution
-
queryForLong
public long queryForLong(SqlStatement sql) throws DatabaseException
Description copied from interface:Executor
Executes a query that is expected to return a scalar (1 row, 1 column). It is expected that the scalar can be cast into a long.- Parameters:
sql
- The query to execute- Returns:
- A long value, if successful
- Throws:
DatabaseException
- in case something goes wrong during the query execution
-
queryForLong
public long queryForLong(SqlStatement sql, List<SqlVisitor> sqlVisitors) throws DatabaseException
Description copied from interface:Executor
Applies a number of SqlVisitors to the sql query. Then, executes the (possibly modified) query. The query is expected to return a scalar (1 row, 1 column), and that scalar is expected to be a long value.- Parameters:
sql
- The query to execute- Returns:
- A long value, if successful
- Throws:
DatabaseException
- in case something goes wrong during the query execution
-
queryForInt
public int queryForInt(SqlStatement sql) throws DatabaseException
Description copied from interface:Executor
Executes a query that is expected to return a scalar (1 row, 1 column). It is expected that the scalar can be cast into an int.- Parameters:
sql
- The query to execute- Returns:
- An integer, if successful
- Throws:
DatabaseException
- in case something goes wrong during the query execution
-
queryForInt
public int queryForInt(SqlStatement sql, List<SqlVisitor> sqlVisitors) throws DatabaseException
Description copied from interface:Executor
Applies a number of SqlVisitors to the sql query. Then, executes the (possibly modified) query. The query is expected to return a scalar (1 row, 1 column), and that scalar is expected to be an int.- Parameters:
sql
- The query to execute- Returns:
- An integer, if successful
- Throws:
DatabaseException
- in case something goes wrong during the query execution
-
queryForList
public List queryForList(SqlStatement sql, Class elementType) throws DatabaseException
- Throws:
DatabaseException
-
queryForList
public List queryForList(SqlStatement sql, Class elementType, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
queryForList
public List<Map<String,?>> queryForList(SqlStatement sql) throws DatabaseException
Description copied from interface:Executor
Executes a given SQL statement and returns a List of rows. Each row is represented a a Map, where the String is the column name and the value if the content of the column in the row (=cell). - Parameters:
sql
- the SQL query to execute- Returns:
- a List of [Column name] -> [column value]-mapped rows.
- Throws:
DatabaseException
- if an error occurs during SQL processing (e.g. the SQL is not valid for the database)
-
queryForList
public List<Map<String,?>> queryForList(SqlStatement sql, List<SqlVisitor> sqlVisitors) throws DatabaseException
Description copied from interface:Executor
Applies a list of SqlVisitors to the SQL query, then executes the (possibly modified) SQL query and lastly, returns the list of rows. Each row is represented a a Map, where the String is the column name and the value if the content of the column in the row (=cell). - Parameters:
sql
- the SQL query to execute- Returns:
- a List of [Column name] -> [column value]-mapped rows.
- Throws:
DatabaseException
- if an error occurs during SQL processing (e.g. the SQL is not valid for the database)
-
update
public int update(SqlStatement sql) throws DatabaseException
- Throws:
DatabaseException
-
update
public int update(SqlStatement sql, List<SqlVisitor> sqlVisitors) throws DatabaseException
- Throws:
DatabaseException
-
getColumnMapRowMapper
protected RowMapper getColumnMapRowMapper()
Create a new RowMapper for reading columns as key-value pairs.- Returns:
- the RowMapper to use
- See Also:
ColumnMapRowMapper
-
getSingleColumnRowMapper
protected RowMapper getSingleColumnRowMapper(Class requiredType)
Create a new RowMapper for reading result objects from a single column.- Parameters:
requiredType
- the type that each result object is expected to match- Returns:
- the RowMapper to use
- See Also:
SingleColumnRowMapper
-
comment
public void comment(String message) throws DatabaseException
Description copied from interface:Executor
Adds a comment to the database. Currently does nothing but is overridden in the output JDBC template- Throws:
DatabaseException
-
-