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 org.zhdev.varioutil.util.CheckedFunction;
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
@ -11,6 +10,10 @@ import java.util.Objects;
|
||||||
public final class SqlAdapter implements AutoCloseable {
|
public final class SqlAdapter implements AutoCloseable {
|
||||||
private ConnectionProvider provider = ConnectionProvider.NOT_ESTABLISHED;
|
private ConnectionProvider provider = ConnectionProvider.NOT_ESTABLISHED;
|
||||||
|
|
||||||
|
public ConnectionProvider getProvider() {
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
|
||||||
public void setProvider(ConnectionProvider provider) {
|
public void setProvider(ConnectionProvider provider) {
|
||||||
Objects.requireNonNull(provider, "provider");
|
Objects.requireNonNull(provider, "provider");
|
||||||
this.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 {
|
public <T> T executeQuery(CheckedFunction<ResultSet, T, SQLException> function, String query, Object... args) throws SqlException {
|
||||||
return prepareStatement(statement -> {
|
return prepareStatement(statement -> {
|
||||||
try (ResultSet set = statement.executeQuery()) {
|
try (ResultSet set = statement.executeQuery()) {
|
||||||
|
|
@ -48,7 +60,21 @@ public final class SqlAdapter implements AutoCloseable {
|
||||||
}, query, args);
|
}, 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() {
|
public boolean isClosed() {
|
||||||
return provider.isClosed();
|
return provider.isClosed();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue