Package com.github.ddth.dao.jdbc
Class AbstractJdbcHelper
- java.lang.Object
-
- com.github.ddth.dao.jdbc.AbstractJdbcHelper
-
- All Implemented Interfaces:
IJdbcHelper
,java.lang.AutoCloseable
- Direct Known Subclasses:
DdthJdbcHelper
,JdbcTemplateJdbcHelper
public abstract class AbstractJdbcHelper extends java.lang.Object implements IJdbcHelper, java.lang.AutoCloseable
Abstract implementation ofIJdbcHelper
.- Since:
- 0.8.0
- Author:
- Thanh Nguyen
-
-
Field Summary
-
Fields inherited from interface com.github.ddth.dao.jdbc.IJdbcHelper
DEFAULT_DATASOURCE
-
-
Constructor Summary
Constructors Constructor Description AbstractJdbcHelper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
calcFetchSizeForStream(int hintFetchSize, java.sql.Connection conn)
Calculate fetch size used for streaming.void
close()
boolean
commitTransaction(java.sql.Connection conn)
Commit a transaction.void
destroy()
Destroying method.int
execute(java.lang.String sql, java.lang.Object... bindValues)
Execute a non-SELECT statement.int
execute(java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a non-SELECT statement.<T> java.util.List<T>
executeSelect(IRowMapper<T> rowMapper, java.lang.String sql, java.lang.Object... bindValues)
Execute a SELECT statement.<T> java.util.List<T>
executeSelect(IRowMapper<T> rowMapper, java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a SELECT statement.<T> java.util.stream.Stream<T>
executeSelectAsStream(IRowMapper<T> rowMapper, java.sql.Connection conn, boolean autoCloseConnection, int fetchSize, java.lang.String sql, java.lang.Object... bindValues)
Execute a SELECT statement and return result as aStream
.<T> java.util.stream.Stream<T>
executeSelectAsStream(IRowMapper<T> rowMapper, java.sql.Connection conn, boolean autoCloseConnection, int fetchSize, java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a SELECT statement and return result as aStream
.<T> T
executeSelectOne(IRowMapper<T> rowMapper, java.lang.String sql, java.lang.Object... bindValues)
Execute a SELECT statement and fetch one row.<T> T
executeSelectOne(IRowMapper<T> rowMapper, java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a SELECT statement and fetch one row.java.sql.Connection
getConnection(java.lang.String dsName, boolean startTransaction)
Obtain aConnection
instance from the specified data source, starts a transaction if specified.javax.sql.DataSource
getDataSource()
javax.sql.DataSource
getDataSource(java.lang.String dsName)
java.util.Map<java.lang.String,javax.sql.DataSource>
getDataSources()
int
getDefaultFetchSize()
Get default fetch size for SELECT statements.protected org.springframework.jdbc.support.SQLErrorCodesFactory
getSQLErrorCodesFactory()
protected org.springframework.jdbc.support.SQLExceptionTranslator
getSQLExceptionTranslator(java.sql.Connection conn)
AbstractJdbcHelper
init()
Initializing method.void
returnConnection(java.sql.Connection conn)
Return a previously obtainedConnection
viaIJdbcHelper.getConnection()
orIJdbcHelper.getConnection(boolean)
.boolean
rollbackTransaction(java.sql.Connection conn)
Rollback a transaction.AbstractJdbcHelper
setDataSource(java.lang.String dsName, javax.sql.DataSource ds)
AbstractJdbcHelper
setDataSource(javax.sql.DataSource ds)
AbstractJdbcHelper
setDataSources(java.util.Map<java.lang.String,javax.sql.DataSource> dataSources)
AbstractJdbcHelper
setDefaultFetchSize(int fetchSize)
Set default fetch size for SELECT statements.boolean
startTransaction(java.sql.Connection conn)
Start a transaction.protected DaoException
translateSQLException(java.sql.Connection conn, java.lang.String task, java.lang.String sql, java.sql.SQLException e)
protected DaoException
translateSQLException(java.sql.Connection conn, java.sql.SQLException e)
protected DaoException
translateSQLException(org.springframework.dao.DataAccessException dae)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.github.ddth.dao.jdbc.IJdbcHelper
execute, execute, executeSelect, executeSelect, executeSelect, executeSelect, executeSelect, executeSelect, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectAsStream, executeSelectOne, executeSelectOne, executeSelectOne, executeSelectOne, executeSelectOne, executeSelectOne, getConnection, getConnection, getConnection
-
-
-
-
Method Detail
-
setDefaultFetchSize
public AbstractJdbcHelper setDefaultFetchSize(int fetchSize)
Set default fetch size for SELECT statements.- Parameters:
fetchSize
-- Returns:
- Since:
- 0.8.2
-
getDefaultFetchSize
public int getDefaultFetchSize()
Get default fetch size for SELECT statements.- Returns:
- Since:
- 0.8.2
-
getSQLErrorCodesFactory
protected org.springframework.jdbc.support.SQLErrorCodesFactory getSQLErrorCodesFactory()
- Returns:
- Since:
- 0.8.2
-
getSQLExceptionTranslator
protected org.springframework.jdbc.support.SQLExceptionTranslator getSQLExceptionTranslator(java.sql.Connection conn)
- Parameters:
conn
-- Returns:
- Since:
- 0.8.2
-
translateSQLException
protected DaoException translateSQLException(java.sql.Connection conn, java.sql.SQLException e)
- Parameters:
conn
-e
-- Returns:
- Since:
- 0.8.2
-
translateSQLException
protected DaoException translateSQLException(java.sql.Connection conn, java.lang.String task, java.lang.String sql, java.sql.SQLException e)
- Parameters:
conn
-task
-sql
-e
-- Returns:
- Since:
- 0.8.2
-
translateSQLException
protected DaoException translateSQLException(org.springframework.dao.DataAccessException dae)
- Parameters:
dae
-- Returns:
- Since:
- 0.8.2
-
setDataSource
public AbstractJdbcHelper setDataSource(java.lang.String dsName, javax.sql.DataSource ds)
- Parameters:
dsName
-ds
-- Returns:
- Since:
- 0.8.1
-
getDataSource
public javax.sql.DataSource getDataSource(java.lang.String dsName)
- Parameters:
dsName
-- Returns:
- Since:
- 0.8.1
-
getDataSources
public java.util.Map<java.lang.String,javax.sql.DataSource> getDataSources()
- Returns:
- Since:
- 0.8.1
-
setDataSources
public AbstractJdbcHelper setDataSources(java.util.Map<java.lang.String,javax.sql.DataSource> dataSources)
- Parameters:
dataSources
-- Returns:
- Since:
- 0.8.1
-
setDataSource
public AbstractJdbcHelper setDataSource(javax.sql.DataSource ds)
-
getDataSource
public javax.sql.DataSource getDataSource()
-
init
public AbstractJdbcHelper init()
Initializing method.- Returns:
-
destroy
public void destroy()
Destroying method.
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
-
getConnection
public java.sql.Connection getConnection(java.lang.String dsName, boolean startTransaction)
Obtain aConnection
instance from the specified data source, starts a transaction if specified.- Specified by:
getConnection
in interfaceIJdbcHelper
- Returns:
- Since:
- 0.8.1
-
returnConnection
public void returnConnection(java.sql.Connection conn)
Return a previously obtainedConnection
viaIJdbcHelper.getConnection()
orIJdbcHelper.getConnection(boolean)
.- Specified by:
returnConnection
in interfaceIJdbcHelper
-
startTransaction
public boolean startTransaction(java.sql.Connection conn)
Start a transaction. Has no effect if already in a transaction.- Specified by:
startTransaction
in interfaceIJdbcHelper
- Returns:
-
commitTransaction
public boolean commitTransaction(java.sql.Connection conn)
Commit a transaction. Has no effect if not in a transaction.Note:
autoCommit
is set totrue
after calling this method.- Specified by:
commitTransaction
in interfaceIJdbcHelper
- Returns:
-
rollbackTransaction
public boolean rollbackTransaction(java.sql.Connection conn)
Rollback a transaction. Has no effect if not in a transaction.Note:
autoCommit
is set totrue
after calling this method.- Specified by:
rollbackTransaction
in interfaceIJdbcHelper
- Returns:
-
execute
public int execute(java.lang.String sql, java.lang.Object... bindValues)
Execute a non-SELECT statement.- Specified by:
execute
in interfaceIJdbcHelper
bindValues
- index-based bind values- Returns:
- DaoException
-
execute
public int execute(java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a non-SELECT statement.- Specified by:
execute
in interfaceIJdbcHelper
bindValues
- name-based bind values- Returns:
- DaoException
-
executeSelect
public <T> java.util.List<T> executeSelect(IRowMapper<T> rowMapper, java.lang.String sql, java.lang.Object... bindValues)
Execute a SELECT statement.- Specified by:
executeSelect
in interfaceIJdbcHelper
- Parameters:
rowMapper
- to map theResultSet
to objectbindValues
- index-based bind values- Returns:
-
executeSelect
public <T> java.util.List<T> executeSelect(IRowMapper<T> rowMapper, java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a SELECT statement.- Specified by:
executeSelect
in interfaceIJdbcHelper
- Parameters:
rowMapper
- to map theResultSet
to objectbindValues
- name-based bind values- Returns:
-
executeSelectOne
public <T> T executeSelectOne(IRowMapper<T> rowMapper, java.lang.String sql, java.lang.Object... bindValues)
Execute a SELECT statement and fetch one row.- Specified by:
executeSelectOne
in interfaceIJdbcHelper
- Parameters:
rowMapper
- to map theResultSet
to objectbindValues
- index-based bind values- Returns:
-
executeSelectOne
public <T> T executeSelectOne(IRowMapper<T> rowMapper, java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a SELECT statement and fetch one row.- Specified by:
executeSelectOne
in interfaceIJdbcHelper
- Parameters:
rowMapper
- to map theResultSet
to objectbindValues
- name-based bind values- Returns:
-
calcFetchSizeForStream
protected int calcFetchSizeForStream(int hintFetchSize, java.sql.Connection conn) throws java.sql.SQLException
Calculate fetch size used for streaming.Difference db-drivers/vendors accept different fetch-size values for result-set streaming.
- Parameters:
hintFetchSize
-conn
-- Returns:
- Throws:
java.sql.SQLException
-
executeSelectAsStream
public <T> java.util.stream.Stream<T> executeSelectAsStream(IRowMapper<T> rowMapper, java.sql.Connection conn, boolean autoCloseConnection, int fetchSize, java.lang.String sql, java.lang.Object... bindValues)
Execute a SELECT statement and return result as aStream
.- Specified by:
executeSelectAsStream
in interfaceIJdbcHelper
autoCloseConnection
- iftrue
the suppliedConnection
will be automatically closed when the returnedStream
closes.- Returns:
-
executeSelectAsStream
public <T> java.util.stream.Stream<T> executeSelectAsStream(IRowMapper<T> rowMapper, java.sql.Connection conn, boolean autoCloseConnection, int fetchSize, java.lang.String sql, java.util.Map<java.lang.String,?> bindValues)
Execute a SELECT statement and return result as aStream
.- Specified by:
executeSelectAsStream
in interfaceIJdbcHelper
autoCloseConnection
- iftrue
the suppliedConnection
will be automatically closed when the returnedStream
closes.- Returns:
-
-