Class JdbcTemplate


  • public class JdbcTemplate
    extends Object
    A utility class to call JDBC with lambda expressions. 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 Detail

      • JdbcTemplate

        public JdbcTemplate​(DataSource dataSource)
    • Method Detail

      • executeQuery

        public <T> List<T> executeQuery​(String query,
                                        RowMapper<T> rowMapper,
                                        QueryFilter queryFilter)
                                 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.
        queryFilter - 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,
                                       QueryFilter queryFilter)
                                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.
        queryFilter - parameters for the SQL query parameter replacement.
        Returns:
        domain object of required type.
        Throws:
        DataAccessException
      • executeUpdate

        public void executeUpdate​(String query,
                                  QueryFilter queryFilter)
                           throws DataAccessException
        Executes the jdbc update query and returns nothing.
        Parameters:
        query - SQL query with the parameter placeholders.
        queryFilter - 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,
                                     QueryFilter queryFilter,
                                     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.
        queryFilter - Query filter to prepared statement parameter binding.
        bean - the Domain object to be inserted/updated.
        Throws:
        DataAccessException
      • executeInsert

        public <T> int executeInsert​(String query,
                                     QueryFilter queryFilter,
                                     T bean,
                                     boolean fetchInsertedId,
                                     String autoGenerateIdColumnName)
                              throws DataAccessException
        Executes the jdbc insert/update query depends on provided auto generated column name.
        Type Parameters:
        T - Return type of the object.
        Parameters:
        query - The SQL for insert/update.
        queryFilter - Query filter to prepared statement parameter binding.
        bean - The Domain object to be inserted/updated.
        fetchInsertedId - Fetch inserted ID.
        autoGenerateIdColumnName - Name of auto generate ID column.
        Returns:
        Throws:
        DataAccessException
      • executeBatchInsert

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

        public <T> int executeBatchDelete​(String query,
                                          QueryFilter queryFilter)
                                   throws DataAccessException
        Executes the jdbc batch delete query.
        Parameters:
        query - The SQL for delete
        queryFilter - Query filter to prepared statement parameter binding.
        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.