Add SqlAdapter#getProvider
This commit is contained in:
parent
3d79234fb4
commit
05f221f059
1 changed files with 27 additions and 1 deletions
|
|
@ -2,7 +2,6 @@ package org.zhdev.varioutil.sql;
|
|||
|
||||
import org.zhdev.varioutil.util.CheckedFunction;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
|
@ -11,6 +10,10 @@ import java.util.Objects;
|
|||
public final class SqlAdapter implements AutoCloseable {
|
||||
private ConnectionProvider provider = ConnectionProvider.NOT_ESTABLISHED;
|
||||
|
||||
public ConnectionProvider getProvider() {
|
||||
return provider;
|
||||
}
|
||||
|
||||
public void setProvider(ConnectionProvider provider) {
|
||||
Objects.requireNonNull(provider, "provider");
|
||||
this.provider = provider;
|
||||
|
|
@ -40,6 +43,15 @@ public final class SqlAdapter implements AutoCloseable {
|
|||
}
|
||||
}
|
||||
|
||||
public <T> T prepareStatement(String[] columnNames, CheckedFunction<PreparedStatement, T, SQLException> function, String query, Object... args) throws SqlException {
|
||||
try (PreparedStatement statement = provider.getConnection().prepareStatement(query, columnNames)) {
|
||||
applyArgs(statement, args);
|
||||
return function.apply(statement);
|
||||
} catch (SQLException e) {
|
||||
throw new SqlException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public <T> T executeQuery(CheckedFunction<ResultSet, T, SQLException> function, String query, Object... args) throws SqlException {
|
||||
return prepareStatement(statement -> {
|
||||
try (ResultSet set = statement.executeQuery()) {
|
||||
|
|
@ -48,7 +60,21 @@ public final class SqlAdapter implements AutoCloseable {
|
|||
}, query, args);
|
||||
}
|
||||
|
||||
public <T> T executeQuery(int autoGeneratedKeys, CheckedFunction<ResultSet, T, SQLException> function, String query, Object... args) throws SqlException {
|
||||
return prepareStatement(autoGeneratedKeys, statement -> {
|
||||
try (ResultSet set = statement.executeQuery()) {
|
||||
return function.apply(set);
|
||||
}
|
||||
}, query, args);
|
||||
}
|
||||
|
||||
public <T> T executeQuery(String[] columnNames, CheckedFunction<ResultSet, T, SQLException> function, String query, Object... args) throws SqlException {
|
||||
return prepareStatement(columnNames, statement -> {
|
||||
try (ResultSet set = statement.executeQuery()) {
|
||||
return function.apply(set);
|
||||
}
|
||||
}, query, args);
|
||||
}
|
||||
|
||||
public boolean isClosed() {
|
||||
return provider.isClosed();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue