Class NamedJdbcTemplate

java.lang.Object
org.wso2.carbon.database.utils.jdbc.NamedJdbcTemplate

public class NamedJdbcTemplate extends Object
This utility class used to call JDBC with lambda expressions is different from JdbcTemplate class as it supports the use of named prepared statement. This class simplifies the usage of JDBC and helps to avoid common errors. Using this class we can execute insert, select, update and delete queries by providing necessary parameters to the methods. Transaction support is also available with this implementation for the query executions. All the SQL operations performed by this class are logged at the debug level.
  • Constructor Details

    • NamedJdbcTemplate

      public NamedJdbcTemplate(DataSource dataSource)
  • Method Details

    • withTransaction

      public <T, E extends Exception> T withTransaction(NamedExecuteCallable<T> callable) throws TransactionException, E
      Provides the transaction support for the JDBC executions of the template.
      Parameters:
      callable - the SQL query execution method call.
      Returns:
      result set of domain objects of required type.
      Throws:
      TransactionException
      E
    • executeQuery

      public <T> List<T> executeQuery(String query, RowMapper<T> rowMapper) throws DataAccessException
      Executes a query on JDBC and return the result as a list of domain objects.
      Parameters:
      query - the SQL query with the parameter placeholders.
      rowMapper - Row mapper functional interface.
      Returns:
      List of domain objects of required type.
      Throws:
      DataAccessException
      See Also:
    • executeQuery

      public <T> List<T> executeQuery(String query, RowMapper<T> rowMapper, NamedQueryFilter namedQueryFilter) throws DataAccessException
      Executes a query on JDBC and return the result as a list of domain objects.
      Parameters:
      query - the SQL query with the parameter placeholders.
      rowMapper - Row mapper functional interface.
      namedQueryFilter - parameters for the SQL query parameter replacement.
      Returns:
      List of domain objects of required type.
      Throws:
      DataAccessException
    • fetchSingleRecord

      public <T> T fetchSingleRecord(String query, RowMapper<T> rowMapper, NamedQueryFilter namedQueryFilter) throws DataAccessException
      Executes a query on JDBC and return the result as a domain object.
      Parameters:
      query - the SQL query with the parameter placeholders.
      rowMapper - Row mapper functional interface.
      namedQueryFilter - parameters for the SQL query parameter replacement.
      Returns:
      domain object of required type.
      Throws:
      DataAccessException
    • executeUpdate

      public void executeUpdate(String query, NamedQueryFilter namedQueryFilter) throws DataAccessException
      Executes the jdbc update query and returns nothing.
      Parameters:
      query - SQL query with the parameter placeholders.
      namedQueryFilter - parameters for the SQL query parameter replacement.
      Throws:
      DataAccessException
    • executeUpdate

      public int executeUpdate(String query) throws DataAccessException
      Executes the jdbc update query and returns the result as updated id integer.
      Parameters:
      query - the SQL query with the parameter placeholders.
      Returns:
      the updated id.
      Throws:
      DataAccessException
    • executeInsert

      public <T> int executeInsert(String query, NamedQueryFilter namedQueryFilter, T bean, boolean fetchInsertedId) throws DataAccessException
      Executes the jdbc insert/update query.
      Type Parameters:
      T - return type of the object.
      Parameters:
      query - The SQL for insert/update.
      namedQueryFilter - Query filter to prepared statement parameter binding.
      bean - the Domain object to be inserted/updated.
      fetchInsertedId - Fetch inserted ID.
      Throws:
      DataAccessException
    • executeInsert

      public <T> int executeInsert(String query, NamedQueryFilter namedQueryFilter, T bean, boolean fetchInsertedId, String autoGenerateIdColumnName) throws DataAccessException
      Executes the jdbc insert/update query.
      Type Parameters:
      T - return type of the object.
      Parameters:
      query - The SQL for insert/update.
      namedQueryFilter - Query filter to named prepared statement parameter binding.
      bean - the Domain object to be inserted/updated.
      fetchInsertedId - Fetch inserted ID.
      autoGenerateIdColumnName - Name of auto generate ID column.
      Throws:
      DataAccessException
    • executeBatchInsert

      public <T> int executeBatchInsert(String query, NamedQueryFilter namedQueryFilter, T bean) throws DataAccessException
      Executes the jdbc insert/update query.
      Parameters:
      query - The SQL for insert/update.
      namedQueryFilter - Query filter to named prepared statement parameter binding.
      bean - the Domain object to be inserted/updated.
      Throws:
      DataAccessException
    • getDriverName

      public String getDriverName() throws DataAccessException
      Returns:
      the driver name of the connection provided by the datasource.
      Throws:
      DataAccessException
    • getDatabaseProductName

      public String getDatabaseProductName() throws DataAccessException
      Retrieve database product name from the data source.
      Returns:
      database product name from the data source.
      Throws:
      DataAccessException - if an error occurs while retrieving metadata from data source.