![JAR search and dependency download from the Maven repository](/logo.png)
com.jn.sqlhelper.common.jdbc.SqlHelperJdbcTemplate Maven / Gradle / Ivy
package com.jn.sqlhelper.common.jdbc;
import com.jn.langx.util.collection.Collects;
import com.jn.langx.util.io.IOs;
import com.jn.sqlhelper.common.resultset.ResultSetExtractor;
import com.jn.sqlhelper.common.resultset.RowMapper;
import com.jn.sqlhelper.common.resultset.RowMapperResultSetExtractor;
import com.jn.sqlhelper.common.resultset.SingleRecordRowMapperResultSetExtractor;
import com.jn.sqlhelper.common.statement.CallableStatementSetter;
import com.jn.sqlhelper.common.statement.ListPreparedStatementSetter;
import com.jn.sqlhelper.common.statement.PreparedStatementSetter;
import javax.sql.DataSource;
import java.sql.*;
import java.util.List;
public class SqlHelperJdbcTemplate implements JdbcTemplate{
private DataSource dataSource;
public SqlHelperJdbcTemplate(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public DataSource getDataSource() {
return dataSource;
}
/**
* Executes this query with these parameters against this connection.
*
* @param sql The sql to execute.
* @return The query results.
* @throws SQLException when the query execution failed.
*/
public boolean execute(String sql) throws SQLException {
Statement statement = null;
Connection conn = null;
try {
conn = dataSource.getConnection();
statement = conn.createStatement();
return statement.execute(sql);
} finally {
IOs.close(statement);
IOs.close(conn);
}
}
/**
* Executes this query with these parameters against this connection.
*
* @param sql The sql to execute.
* @param params The query parameters.
* @return The query results.
* @throws SQLException when the query execution failed.
*/
public T executeQuery(String sql, PreparedStatementSetter preparedStatementSetter, ResultSetExtractor extractor, Object... params) throws SQLException {
PreparedStatement statement = null;
ResultSet resultSet = null;
Connection conn = null;
T result;
try {
conn = dataSource.getConnection();
statement = conn.prepareStatement(sql);
preparedStatementSetter.setParameters(statement, 1, params);
resultSet = statement.executeQuery();
result = extractor.extract(resultSet);
} finally {
IOs.close(resultSet);
IOs.close(statement);
IOs.close(conn);
}
return result;
}
public T executeQuery(String sql, ResultSetExtractor extractor, Object... params) throws SQLException {
return executeQuery(sql, new ListPreparedStatementSetter(), extractor, Collects.asList(params));
}
public List queryList(String sql, RowMapper rowMapper, Object... params) throws SQLException {
ResultSetExtractor> extractor = new RowMapperResultSetExtractor(rowMapper);
List result = executeQuery(sql, extractor, params);
return result;
}
public T queryOne(String sql, RowMapper rowMapper, Object... params) throws SQLException {
ResultSetExtractor extractor = new SingleRecordRowMapperResultSetExtractor(rowMapper);
T result = executeQuery(sql, extractor, params);
return result;
}
public int executeUpdate(String sql, PreparedStatementSetter preparedStatementSetter, Object... params) throws SQLException {
PreparedStatement statement = null;
Connection conn = null;
try {
conn = dataSource.getConnection();
statement = conn.prepareStatement(sql);
preparedStatementSetter.setParameters(statement, 1, params);
return statement.executeUpdate();
} finally {
IOs.close(statement);
IOs.close(conn);
}
}
public T call(String sql, List> params, ResultSetExtractor extractor) throws SQLException {
CallableStatement statement = null;
Connection conn = null;
ResultSet resultSet = null;
T result;
try {
conn = dataSource.getConnection();
statement = conn.prepareCall(sql);
CallableStatementSetter callableStatementSetter = new CallableStatementSetter();
callableStatementSetter.setParameters(statement, 1, params);
resultSet = statement.executeQuery();
result = extractor.extract(resultSet);
} finally {
IOs.close(resultSet);
IOs.close(statement);
IOs.close(conn);
}
return result;
}
private void batchUpdate() {
Connection conn;
// will DO
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy