public final class SQLExecutor
extends java.lang.Object
implements java.io.Closeable
INSERT INTO account (first_name, last_name, gui, last_update_time, create_time) VALUES (?, ?, ?, ?, ?)
INSERT INTO account (first_name, last_name, gui, last_update_time, create_time) VALUES (#{firstName}, #{lastName}, #{gui}, #{lastUpdateTime}, #{createTime})
INSERT INTO account (first_name, last_name, gui, last_update_time, create_time) VALUES (:firstName, :lastName, :gui, :lastUpdateTime, :createTime)
SQLBuilder
conveniently. Parameters with format of Array/List parameters are supported for parameterized sql with '?'.
Parameters with format of Array/List/Map/Entity are supported for parameterized SQL with named parameters.
Here is sample of CRUD(create/read/update/delete):
static final DataSource dataSource = JdbcUtil.createDataSource(...);
static final SQLExecutor sqlExecutor = new SQLExecutor(dataSource);
...
Account account = createAccount();
// create
String sql_insert = NE.insert(GUI, FIRST_NAME, LAST_NAME, LAST_UPDATE_TIME, CREATE_TIME).into(Account.class).sql();
N.println(sql_insert);
sqlExecutor.insert(sql_insert, account);
// read
String sql_selectByGUI = NE.selectFrom(Account.class, N.asSet(DEVICES)).where(L.eq(GUI, L.QME)).sql();
N.println(sql_selectByGUI);
Account dbAccount = sqlExecutor.queryForEntity(Account.class, sql_selectByGUI, account);
assertEquals(account.getFirstName(), dbAccount.getFirstName());
// update
String sql_updateByLastName = NE.update(Account.class).set(FIRST_NAME).where(L.eq(LAST_NAME, L.QME)).sql();
N.println(sql_updateByLastName);
dbAccount.setFirstName("newFirstName");
sqlExecutor.update(sql_updateByLastName, dbAccount);
// delete
String sql_deleteByFirstName = NE.deleteFrom(Account.class).where(L.eq(FIRST_NAME, L.QME)).sql();
N.println(sql_deleteByFirstName);
sqlExecutor.update(sql_deleteByFirstName, dbAccount);
dbAccount = sqlExecutor.queryForEntity(Account.class, sql_selectByGUI, account);
assertNull(dbAccount);
========================================================================
conn
argument is null or not specified, SQLExecutor
is responsible to get the connection from the
internal DataSource
, start and commit/roll back transaction for batch operations if needed, and close the
connection finally. otherwise it's user's responsibility to do such jobs if conn
is specified and not null.
final SQLTransaction tran = sqlExecutor.beginTransaction(IsolationLevel.READ_COMMITTED);
boolean noException = false;
try {
// sqlExecutor.insert(tran.getConnection(), ...);
// sqlExecutor.update(tran.getConnection(), ...);
// sqlExecutor.query(tran.getConnection(), ...);
noException = true;
} finally {
// The connection will be automatically closed after the transaction is committed or rolled back.
if (noException) {
tran.commit();
} else {
tran.rollback();
}
}
SQLExecutor is tread-safe.Modifier and Type | Class and Description |
---|---|
static class |
SQLExecutor.AbstractResultSetExtractor<T> |
static class |
SQLExecutor.AbstractStatementSetter |
static class |
SQLExecutor.JdbcSettings |
static class |
SQLExecutor.Mapper<T> |
static interface |
SQLExecutor.ResultSetExtractor<T>
Refer to http://landawn.com/introduction-to-jdbc.html about how to read columns/rows from
java.sql.ResultSet |
static interface |
SQLExecutor.StatementSetter
Refer to http://landawn.com/introduction-to-jdbc.html about how to set parameters in
java.sql.PreparedStatement |
static class |
SQLExecutor.TypedParameters |
Constructor and Description |
---|
SQLExecutor(javax.sql.DataSource dataSource) |
SQLExecutor(DataSourceManager dataSourceManager) |
SQLExecutor(DataSourceManager dataSourceManager,
SQLExecutor.JdbcSettings jdbcSettings) |
SQLExecutor(DataSourceManager dataSourceManager,
SQLExecutor.JdbcSettings jdbcSettings,
SQLMapper sqlMapper) |
SQLExecutor(DataSourceManager dataSourceManager,
SQLExecutor.JdbcSettings jdbcSettings,
SQLMapper sqlMapper,
NamingPolicy namingPolicy) |
SQLExecutor(DataSourceManager dataSourceManager,
SQLExecutor.JdbcSettings jdbcSettings,
SQLMapper sqlMapper,
NamingPolicy namingPolicy,
AsyncExecutor asyncExecutor) |
SQLExecutor(javax.sql.DataSource dataSource,
SQLExecutor.JdbcSettings jdbcSettings) |
SQLExecutor(javax.sql.DataSource dataSource,
SQLExecutor.JdbcSettings jdbcSettings,
SQLMapper sqlMapper) |
SQLExecutor(javax.sql.DataSource dataSource,
SQLExecutor.JdbcSettings jdbcSettings,
SQLMapper sqlMapper,
NamingPolicy namingPolicy) |
SQLExecutor(javax.sql.DataSource dataSource,
SQLExecutor.JdbcSettings jdbcSettings,
SQLMapper sqlMapper,
NamingPolicy namingPolicy,
AsyncExecutor asyncExecutor) |
Modifier and Type | Method and Description |
---|---|
AsyncSQLExecutor |
async() |
<T> java.util.List<T> |
batchInsert(java.sql.Connection conn,
java.lang.String sql,
java.util.List<?> batchParameters) |
<T> java.util.List<T> |
batchInsert(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.util.List<?> batchParameters) |
<T> java.util.List<T> |
batchInsert(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.util.List<?> batchParameters) |
<T> java.util.List<T> |
batchInsert(java.lang.String sql,
java.util.List<?> batchParameters) |
<T> java.util.List<T> |
batchInsert(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.util.List<?> batchParameters) |
<T> java.util.List<T> |
batchInsert(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.util.List<?> batchParameters) |
int |
batchUpdate(java.sql.Connection conn,
java.lang.String sql,
java.util.List<?> batchParameters) |
int |
batchUpdate(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.util.List<?> batchParameters) |
int |
batchUpdate(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.util.List<?> batchParameters) |
int |
batchUpdate(java.lang.String sql,
java.util.List<?> batchParameters) |
int |
batchUpdate(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.util.List<?> batchParameters) |
int |
batchUpdate(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.util.List<?> batchParameters) |
SQLTransaction |
beginTransaction(IsolationLevel isolationLevel)
The connection opened in the transaction will be automatically closed after the transaction is committed or rolled back.
|
void |
close()
Close the underline data source
|
void |
closeQuietly(java.sql.Connection conn)
Unconditionally close an
Connection . |
void |
closeQuietly(java.sql.PreparedStatement stmt)
Unconditionally close an
Statement . |
void |
closeQuietly(java.sql.PreparedStatement stmt,
java.sql.Connection conn)
Unconditionally close the
Statement, Connection . |
void |
closeQuietly(java.sql.ResultSet rs)
Unconditionally close an
ResultSet . |
void |
closeQuietly(java.sql.ResultSet rs,
java.sql.PreparedStatement stmt)
Unconditionally close the
ResultSet, Statement . |
void |
closeQuietly(java.sql.ResultSet rs,
java.sql.PreparedStatement stmt,
java.sql.Connection conn)
Unconditionally close the
ResultSet, Statement, Connection . |
int |
count(java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
int |
count(java.lang.String sql,
java.lang.Object... parameters) |
boolean |
createTableIfNotExists(java.lang.String tableName,
java.lang.String schema)
Returns
true if succeed to create table, otherwise false is returned. |
DataSource |
dataSource() |
java.lang.String |
dbProudctName() |
java.lang.String |
dbProudctVersion() |
DBVersion |
dbVersion() |
boolean |
doesTableExist(java.lang.String tableName) |
boolean |
dropTableIfExists(java.lang.String tableName)
Returns
true if succeed to drop table, otherwise false is returned. |
void |
execute(java.lang.String sql,
java.lang.Object... parameters)
Execute the sql with the specified parameters.
|
boolean |
exists(java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
boolean |
exists(java.lang.String sql,
java.lang.Object... parameters) |
<T> java.util.List<T> |
find(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
<T> java.util.List<T> |
find(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> java.util.List<T> |
find(java.lang.Class<T> targetClass,
java.lang.String sql,
java.lang.Object... parameters) |
<T> java.util.List<T> |
find(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> java.util.List<T> |
findAll(java.lang.Class<T> targetClass,
java.util.List<java.lang.String> sqls,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> java.util.List<T> |
findAll(java.lang.Class<T> targetClass,
java.util.List<java.lang.String> sqls,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> java.util.List<T> |
findAll(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> java.util.List<T> |
findAll(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> T |
get(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
<T> T |
get(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> T |
get(java.lang.Class<T> targetClass,
java.lang.String sql,
java.lang.Object... parameters) |
<T> T |
get(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
java.util.List<java.lang.String> |
getColumnNameList(java.lang.String tableName) |
java.sql.Connection |
getConnection() |
DBLock |
getDBLock(java.lang.String tableName)
Supports global lock by db table
|
DBSequence |
getDBSequence(java.lang.String tableName,
java.lang.String seqName) |
DBSequence |
getDBSequence(java.lang.String tableName,
java.lang.String seqName,
long startVal,
int seqBufferSize)
Supports global sequence by db table.
|
<T> T |
insert(java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
<T> T |
insert(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
<T> T |
insert(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> T |
insert(java.lang.String sql,
java.lang.Object... parameters) |
<T> T |
insert(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
<T> T |
insert(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
SQLExecutor.JdbcSettings |
jdbcSettings() |
<T> SQLExecutor.Mapper<T> |
mapper(java.lang.Class<T> targetClass) |
DataSet |
query(java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
DataSet |
query(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
<T> T |
query(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.ResultSetExtractor<T> resultSetExtractor,
java.lang.Object... parameters) |
<T> T |
query(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.ResultSetExtractor<T> resultSetExtractor,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the
ResultSet , Statement and Connection if the return type T is ResultSet or RowIterator . |
DataSet |
query(java.lang.String sql,
java.lang.Object... parameters) |
DataSet |
query(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
<T> T |
query(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.ResultSetExtractor<T> resultSetExtractor,
java.lang.Object... parameters) |
<T> T |
query(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.ResultSetExtractor<T> resultSetExtractor,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the
ResultSet , Statement and Connection if the return type T is ResultSet or RowIterator . |
DataSet |
queryAll(java.util.List<java.lang.String> sqls,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
DataSet |
queryAll(java.util.List<java.lang.String> sqls,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
DataSet |
queryAll(java.lang.String sql,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
DataSet |
queryAll(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
OptionalBoolean |
queryForBoolean(java.lang.String sql,
java.lang.Object... parameters) |
OptionalByte |
queryForByte(java.lang.String sql,
java.lang.Object... parameters) |
OptionalChar |
queryForChar(java.lang.String sql,
java.lang.Object... parameters) |
OptionalDouble |
queryForDouble(java.lang.String sql,
java.lang.Object... parameters) |
<T> Optional<T> |
queryForEntity(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
<T> Optional<T> |
queryForEntity(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Just fetch the result in the 1st row.
|
<T> Optional<T> |
queryForEntity(java.lang.Class<T> targetClass,
java.lang.String sql,
java.lang.Object... parameters) |
<T> Optional<T> |
queryForEntity(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
OptionalFloat |
queryForFloat(java.lang.String sql,
java.lang.Object... parameters) |
OptionalInt |
queryForInt(java.lang.String sql,
java.lang.Object... parameters) |
OptionalLong |
queryForLong(java.lang.String sql,
java.lang.Object... parameters) |
OptionalShort |
queryForShort(java.lang.String sql,
java.lang.Object... parameters) |
<T> NullabLe<T> |
queryForSingleResult(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
<T> NullabLe<T> |
queryForSingleResult(java.lang.Class<T> targetClass,
java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Just fetch the result in the 1st row and 1st column.
|
<T> NullabLe<T> |
queryForSingleResult(java.lang.Class<T> targetClass,
java.lang.String sql,
java.lang.Object... parameters) |
<T> NullabLe<T> |
queryForSingleResult(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
NullabLe<java.lang.String> |
queryForString(java.lang.String sql,
java.lang.Object... parameters) |
<T> Try<Stream<T>> |
stream(java.lang.Class<T> targetClass,
java.lang.String sql,
java.lang.Object... parameters) |
<T> Try<Stream<T>> |
stream(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
<T> Try<Stream<T>> |
stream(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the returned
Stream to close the underlying ResultSet . |
Try<Stream<java.lang.Object[]>> |
stream(java.lang.String sql,
java.lang.Object... parameters) |
Try<Stream<java.lang.Object[]>> |
stream(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
Try<Stream<java.lang.Object[]>> |
stream(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the returned
Stream to close the underlying ResultSet . |
<T> Try<Stream<T>> |
streamAll(java.lang.Class<T> targetClass,
java.util.List<java.lang.String> sqls,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> Try<Stream<T>> |
streamAll(java.lang.Class<T> targetClass,
java.util.List<java.lang.String> sqls,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the returned
Stream list to close the underlying ResultSet list. |
<T> Try<Stream<T>> |
streamAll(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
<T> Try<Stream<T>> |
streamAll(java.lang.Class<T> targetClass,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the returned
Stream list to close the underlying ResultSet list. |
Try<Stream<java.lang.Object[]>> |
streamAll(java.util.List<java.lang.String> sqls,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
Try<Stream<java.lang.Object[]>> |
streamAll(java.util.List<java.lang.String> sqls,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the returned
Stream list to close the underlying ResultSet list. |
Try<Stream<java.lang.Object[]>> |
streamAll(java.lang.String sql,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
Try<Stream<java.lang.Object[]>> |
streamAll(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters)
Remember to close the returned
Stream list to close the underlying ResultSet list. |
int |
update(java.sql.Connection conn,
java.lang.String sql,
java.lang.Object... parameters) |
int |
update(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
int |
update(java.sql.Connection conn,
java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
int |
update(java.lang.String sql,
java.lang.Object... parameters) |
int |
update(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
java.lang.Object... parameters) |
int |
update(java.lang.String sql,
SQLExecutor.StatementSetter statementSetter,
SQLExecutor.JdbcSettings jdbcSettings,
java.lang.Object... parameters) |
static SQLExecutor |
w(java.lang.Class<? extends java.sql.Driver> driverClass,
java.lang.String url,
java.lang.String user,
java.lang.String password) |
static SQLExecutor |
w(java.lang.String url,
java.lang.String user,
java.lang.String password) |
static SQLExecutor |
w(java.lang.String driver,
java.lang.String url,
java.lang.String user,
java.lang.String password) |
public SQLExecutor(javax.sql.DataSource dataSource)
dataSource
- JdbcUtil.createDataSource(String)
,
JdbcUtil.createDataSource(java.io.InputStream)
public SQLExecutor(javax.sql.DataSource dataSource, SQLExecutor.JdbcSettings jdbcSettings)
dataSource
- jdbcSettings
- JdbcUtil.createDataSource(String)
,
JdbcUtil.createDataSource(java.io.InputStream)
public SQLExecutor(javax.sql.DataSource dataSource, SQLExecutor.JdbcSettings jdbcSettings, SQLMapper sqlMapper)
dataSource
- jdbcSettings
- sqlMapper
- JdbcUtil.createDataSource(String)
,
JdbcUtil.createDataSource(java.io.InputStream)
public SQLExecutor(javax.sql.DataSource dataSource, SQLExecutor.JdbcSettings jdbcSettings, SQLMapper sqlMapper, NamingPolicy namingPolicy)
dataSource
- jdbcSettings
- sqlMapper
- namingPolicy
- JdbcUtil.createDataSourceManager(String)
,
JdbcUtil.createDataSourceManager(java.io.InputStream)
public SQLExecutor(javax.sql.DataSource dataSource, SQLExecutor.JdbcSettings jdbcSettings, SQLMapper sqlMapper, NamingPolicy namingPolicy, AsyncExecutor asyncExecutor)
dataSource
- jdbcSettings
- sqlMapper
- asyncExecutor
- JdbcUtil.createDataSource(String)
,
JdbcUtil.createDataSource(java.io.InputStream)
public SQLExecutor(DataSourceManager dataSourceManager)
dataSourceManager
- JdbcUtil.createDataSourceManager(String)
,
JdbcUtil.createDataSourceManager(java.io.InputStream)
public SQLExecutor(DataSourceManager dataSourceManager, SQLExecutor.JdbcSettings jdbcSettings)
dataSourceManager
- jdbcSettings
- JdbcUtil.createDataSourceManager(String)
,
JdbcUtil.createDataSourceManager(java.io.InputStream)
public SQLExecutor(DataSourceManager dataSourceManager, SQLExecutor.JdbcSettings jdbcSettings, SQLMapper sqlMapper)
dataSourceManager
- jdbcSettings
- sqlMapper
- JdbcUtil.createDataSourceManager(String)
,
JdbcUtil.createDataSourceManager(java.io.InputStream)
public SQLExecutor(DataSourceManager dataSourceManager, SQLExecutor.JdbcSettings jdbcSettings, SQLMapper sqlMapper, NamingPolicy namingPolicy)
dataSourceManager
- jdbcSettings
- sqlMapper
- namingPolicy
- JdbcUtil.createDataSourceManager(String)
,
JdbcUtil.createDataSourceManager(java.io.InputStream)
public SQLExecutor(DataSourceManager dataSourceManager, SQLExecutor.JdbcSettings jdbcSettings, SQLMapper sqlMapper, NamingPolicy namingPolicy, AsyncExecutor asyncExecutor)
dataSourceManager
- jdbcSettings
- sqlMapper
- asyncExecutor
- JdbcUtil.createDataSourceManager(String)
,
JdbcUtil.createDataSourceManager(java.io.InputStream)
public static SQLExecutor w(java.lang.String url, java.lang.String user, java.lang.String password)
public static SQLExecutor w(java.lang.String driver, java.lang.String url, java.lang.String user, java.lang.String password)
public static SQLExecutor w(java.lang.Class<? extends java.sql.Driver> driverClass, java.lang.String url, java.lang.String user, java.lang.String password)
public <T> SQLExecutor.Mapper<T> mapper(java.lang.Class<T> targetClass)
public AsyncSQLExecutor async()
public DataSource dataSource()
public SQLExecutor.JdbcSettings jdbcSettings()
public java.lang.String dbProudctName()
public java.lang.String dbProudctVersion()
public DBVersion dbVersion()
@SafeVarargs public final <T> T insert(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final <T> T insert(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
@SafeVarargs public final <T> T insert(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final <T> T insert(java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final <T> T insert(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
@SafeVarargs public final <T> T insert(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
#batchInsert(Connection, String, StatementSetter, JdbcSettings, String, Object[])
public <T> java.util.List<T> batchInsert(java.lang.String sql, java.util.List<?> batchParameters)
public <T> java.util.List<T> batchInsert(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.util.List<?> batchParameters)
public <T> java.util.List<T> batchInsert(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.util.List<?> batchParameters)
public <T> java.util.List<T> batchInsert(java.sql.Connection conn, java.lang.String sql, java.util.List<?> batchParameters)
public <T> java.util.List<T> batchInsert(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.util.List<?> batchParameters)
public <T> java.util.List<T> batchInsert(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.util.List<?> batchParameters)
@SafeVarargs public final int update(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final int update(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
@SafeVarargs public final int update(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final int update(java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final int update(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
@SafeVarargs public final int update(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
public int batchUpdate(java.lang.String sql, java.util.List<?> batchParameters)
public int batchUpdate(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.util.List<?> batchParameters)
public int batchUpdate(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.util.List<?> batchParameters)
public int batchUpdate(java.sql.Connection conn, java.lang.String sql, java.util.List<?> batchParameters)
public int batchUpdate(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.util.List<?> batchParameters)
public int batchUpdate(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.util.List<?> batchParameters)
@SafeVarargs public final boolean exists(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final boolean exists(java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final int count(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final int count(java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final <T> T get(java.lang.Class<T> targetClass, java.lang.String sql, java.lang.Object... parameters)
public <T> T get(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final <T> T get(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
public <T> T get(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
targetClass
- conn
- sql
- statementSetter
- jdbcSettings
- parameters
- com.landawn.abacus.exception.NonUniqueResultException
- if two or more records are found.@SafeVarargs public final <T> java.util.List<T> find(java.lang.Class<T> targetClass, java.lang.String sql, java.lang.Object... parameters)
public <T> java.util.List<T> find(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final <T> java.util.List<T> find(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
public <T> java.util.List<T> find(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
targetClass
- conn
- sql
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final <T> java.util.List<T> findAll(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
public <T> java.util.List<T> findAll(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final <T> java.util.List<T> findAll(java.lang.Class<T> targetClass, java.util.List<java.lang.String> sqls, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
public <T> java.util.List<T> findAll(java.lang.Class<T> targetClass, java.util.List<java.lang.String> sqls, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final OptionalBoolean queryForBoolean(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final OptionalChar queryForChar(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final OptionalByte queryForByte(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final OptionalShort queryForShort(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final OptionalInt queryForInt(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final OptionalLong queryForLong(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final OptionalFloat queryForFloat(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final OptionalDouble queryForDouble(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final NullabLe<java.lang.String> queryForString(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final <T> NullabLe<T> queryForSingleResult(java.lang.Class<T> targetClass, java.lang.String sql, java.lang.Object... parameters)
public <T> NullabLe<T> queryForSingleResult(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final <T> NullabLe<T> queryForSingleResult(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
public <T> NullabLe<T> queryForSingleResult(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
null
is returned if no result is found. And this
method will try to convert the result to the specified targetClass
if targetClass
is not null and it's not
assignable from the result.
Special note for type conversion for boolean
or Boolean
type: true
is returned if the
String
value of the target column is "true"
, case insensitive. or it's an integer with value > 0.
Otherwise, false
is returned.
Remember to add limit
condition if big result will be returned by the query.targetClass
- set result type to avoid the NullPointerException if result is null and T is primitive type
"int, long. short ... char, boolean..".conn
- sql
- statementSetter
- jdbcSettings
- parameters
- java.lang.ClassCastException
@SafeVarargs public final <T> Optional<T> queryForEntity(java.lang.Class<T> targetClass, java.lang.String sql, java.lang.Object... parameters)
public <T> Optional<T> queryForEntity(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final <T> Optional<T> queryForEntity(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
public <T> Optional<T> queryForEntity(java.lang.Class<T> targetClass, java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
null
is returned if no result is found. This method will try to
convert the column value to the type of mapping entity property if the mapping entity property is not assignable
from column value.
Remember to add limit
condition if big result will be returned by the query.targetClass
- conn
- sql
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final DataSet query(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final DataSet query(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
@SafeVarargs public final <T> T query(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.ResultSetExtractor<T> resultSetExtractor, java.lang.Object... parameters)
public <T> T query(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.ResultSetExtractor<T> resultSetExtractor, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
ResultSet
, Statement
and Connection
if the return type T
is ResultSet
or RowIterator
.
If T
is RowIterator
, call rowIterator.close()
to close ResultSet
, Statement
and Connection
.
T
is ResultSet
, call below codes to close ResultSet
, Statement
and Connection
.
Connection conn = null;
Statement stmt = null;
try {
stmt = rs.getStatement();
conn = stmt.getConnection();
} catch (SQLException e) {
// TODO.
} finally {
JdbcUtil.closeQuietly(rs, stmt, conn);
}
sql
- statementSetter
- resultSetExtractor
- jdbcSettings
- parameters
- @SafeVarargs public final DataSet query(java.sql.Connection conn, java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final DataSet query(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
public <T> T query(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.ResultSetExtractor<T> resultSetExtractor, java.lang.Object... parameters)
public <T> T query(java.sql.Connection conn, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.ResultSetExtractor<T> resultSetExtractor, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
ResultSet
, Statement
and Connection
if the return type T
is ResultSet
or RowIterator
.
If T
is RowIterator
, call rowIterator.close()
to close ResultSet
, Statement
and Connection
.
T
is ResultSet
, call below codes to close ResultSet
, Statement
and Connection
.
Connection conn = null;
Statement stmt = null;
try {
stmt = rs.getStatement();
conn = stmt.getConnection();
} catch (SQLException e) {
// TODO.
} finally {
JdbcUtil.closeQuietly(rs, stmt, conn);
}
conn
- sql
- statementSetter
- resultSetExtractor
- jdbcSettings
- parameters
- @SafeVarargs public final DataSet queryAll(java.lang.String sql, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final DataSet queryAll(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final DataSet queryAll(java.util.List<java.lang.String> sqls, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final DataSet queryAll(java.util.List<java.lang.String> sqls, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
@SafeVarargs public final Try<Stream<java.lang.Object[]>> stream(java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final Try<Stream<java.lang.Object[]>> stream(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
@SafeVarargs public final Try<Stream<java.lang.Object[]>> stream(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
Stream
to close the underlying ResultSet
.sql
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final Try<Stream<java.lang.Object[]>> streamAll(java.lang.String sql, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
public Try<Stream<java.lang.Object[]>> streamAll(java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
Stream
list to close the underlying ResultSet
list.sql
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final Try<Stream<java.lang.Object[]>> streamAll(java.util.List<java.lang.String> sqls, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
public Try<Stream<java.lang.Object[]>> streamAll(java.util.List<java.lang.String> sqls, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
Stream
list to close the underlying ResultSet
list.sqls
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final <T> Try<Stream<T>> stream(java.lang.Class<T> targetClass, java.lang.String sql, java.lang.Object... parameters)
@SafeVarargs public final <T> Try<Stream<T>> stream(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, java.lang.Object... parameters)
public <T> Try<Stream<T>> stream(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
Stream
to close the underlying ResultSet
.sql
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final <T> Try<Stream<T>> streamAll(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
public <T> Try<Stream<T>> streamAll(java.lang.Class<T> targetClass, java.lang.String sql, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
Stream
list to close the underlying ResultSet
list.sql
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final <T> Try<Stream<T>> streamAll(java.lang.Class<T> targetClass, java.util.List<java.lang.String> sqls, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
public <T> Try<Stream<T>> streamAll(java.lang.Class<T> targetClass, java.util.List<java.lang.String> sqls, SQLExecutor.StatementSetter statementSetter, SQLExecutor.JdbcSettings jdbcSettings, java.lang.Object... parameters)
Stream
list to close the underlying ResultSet
list.sqls
- statementSetter
- jdbcSettings
- parameters
- @SafeVarargs public final void execute(java.lang.String sql, java.lang.Object... parameters)
sql
- parameters
- PreparedStatement.execute()
public SQLTransaction beginTransaction(IsolationLevel isolationLevel)
isolationLevel
- public DBSequence getDBSequence(java.lang.String tableName, java.lang.String seqName)
public DBSequence getDBSequence(java.lang.String tableName, java.lang.String seqName, long startVal, int seqBufferSize)
tableName
- seqName
- startVal
- seqBufferSize
- the numbers to allocate/reserve from database table when cached numbers are used up.public DBLock getDBLock(java.lang.String tableName)
tableName
- public boolean doesTableExist(java.lang.String tableName)
public boolean createTableIfNotExists(java.lang.String tableName, java.lang.String schema)
true
if succeed to create table, otherwise false
is returned.tableName
- schema
- public boolean dropTableIfExists(java.lang.String tableName)
true
if succeed to drop table, otherwise false
is returned.tableName
- public java.util.List<java.lang.String> getColumnNameList(java.lang.String tableName)
tableName
- public java.sql.Connection getConnection()
public void closeQuietly(java.sql.ResultSet rs)
ResultSet
.
Equivalent to ResultSet.close()
, except any exceptions will be ignored.
This is typically used in finally blocks.
rs
- public void closeQuietly(java.sql.PreparedStatement stmt)
Statement
.
Equivalent to Statement.close()
, except any exceptions will be ignored.
This is typically used in finally blocks.
stmt
- public void closeQuietly(java.sql.Connection conn)
Connection
.
Equivalent to Connection.close()
, except any exceptions will be ignored.
This is typically used in finally blocks.
conn
- public void closeQuietly(java.sql.ResultSet rs, java.sql.PreparedStatement stmt)
ResultSet, Statement
.
Equivalent to ResultSet.close()
, Statement.close()
, except any exceptions will be ignored.
This is typically used in finally blocks.
rs
- stmt
- conn
- public void closeQuietly(java.sql.PreparedStatement stmt, java.sql.Connection conn)
Statement, Connection
.
Equivalent to Statement.close()
, Connection.close()
, except any exceptions will be ignored.
This is typically used in finally blocks.
rs
- stmt
- conn
- public void closeQuietly(java.sql.ResultSet rs, java.sql.PreparedStatement stmt, java.sql.Connection conn)
ResultSet, Statement, Connection
.
Equivalent to ResultSet.close()
, Statement.close()
, Connection.close()
, except any exceptions will be ignored.
This is typically used in finally blocks.
rs
- stmt
- conn
- public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
java.io.IOException