Skip to content
Snippets Groups Projects
Commit 8c9437d2 authored by Jefferson Quesado's avatar Jefferson Quesado
Browse files

Permitindo usar a preparação de `Statement` como desejar

Criado métodos que forçam usar a opção otimizada ou a opção correta,
além do padrão que depende do valor da conexão
parent e2c409b3
No related branches found
No related tags found
1 merge request!4Fix batch null mixed order
......@@ -47,7 +47,19 @@ public class PstmtNullSafeConnection implements Connection, WrapperHelper {
@Override
public PreparedStatement prepareStatement(String sql) throws SQLException {
return new PstmtNullSafe(sql, underlying::prepareStatement, getPoolCreator(), this);
return prepareStatementInternal(sql, getPoolCreator());
}
public PreparedStatement prepareStatementOpt(String sql) throws SQLException {
return prepareStatementInternal(sql, SingletonPool::new);
}
public PreparedStatement prepareStatementCorrect(String sql) throws SQLException {
return prepareStatementInternal(sql, ReuseLastPool::new);
}
private PreparedStatement prepareStatementInternal(String sql, Function<Function<Set<Integer>, PreparedStatement>, Pool<Set<Integer>, PreparedStatement>> poolCreator) throws SQLException {
return new PstmtNullSafe(sql, underlying::prepareStatement, poolCreator, this);
}
@Override
......@@ -142,7 +154,19 @@ public class PstmtNullSafeConnection implements Connection, WrapperHelper {
@Override
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, resultSetType, resultSetConcurrency), getPoolCreator(), this);
return prepareStatementInternal(sql, resultSetType, resultSetConcurrency, getPoolCreator());
}
public PreparedStatement prepareStatementOpt(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
return prepareStatementInternal(sql, resultSetType, resultSetConcurrency, SingletonPool::new);
}
public PreparedStatement prepareStatementCorrect(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
return prepareStatementInternal(sql, resultSetType, resultSetConcurrency, ReuseLastPool::new);
}
private PreparedStatement prepareStatementInternal(String sql, int resultSetType, int resultSetConcurrency, Function<Function<Set<Integer>, PreparedStatement>, Pool<Set<Integer>, PreparedStatement>> poolCreator) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, resultSetType, resultSetConcurrency), poolCreator, this);
}
@Override
......@@ -197,7 +221,19 @@ public class PstmtNullSafeConnection implements Connection, WrapperHelper {
@Override
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, resultSetType, resultSetConcurrency, resultSetHoldability), getPoolCreator(), this);
return prepareStatementInternal(sql, resultSetType, resultSetConcurrency, resultSetHoldability, getPoolCreator());
}
public PreparedStatement prepareStatementOpt(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
return prepareStatementInternal(sql, resultSetType, resultSetConcurrency, resultSetHoldability, SingletonPool::new);
}
public PreparedStatement prepareStatementCorrect(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
return prepareStatementInternal(sql, resultSetType, resultSetConcurrency, resultSetHoldability, ReuseLastPool::new);
}
private PreparedStatement prepareStatementInternal(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability, Function<Function<Set<Integer>, PreparedStatement>, Pool<Set<Integer>, PreparedStatement>> poolCreator) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, resultSetType, resultSetConcurrency, resultSetHoldability), poolCreator, this);
}
@Override
......@@ -207,17 +243,53 @@ public class PstmtNullSafeConnection implements Connection, WrapperHelper {
@Override
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, autoGeneratedKeys), getPoolCreator(), this);
return prepareStatementInternal(sql, autoGeneratedKeys, getPoolCreator());
}
public PreparedStatement prepareStatementOpt(String sql, int autoGeneratedKeys) throws SQLException {
return prepareStatementInternal(sql, autoGeneratedKeys, SingletonPool::new);
}
public PreparedStatement prepareStatementCorrect(String sql, int autoGeneratedKeys) throws SQLException {
return prepareStatementInternal(sql, autoGeneratedKeys, ReuseLastPool::new);
}
private PreparedStatement prepareStatementInternal(String sql, int autoGeneratedKeys, Function<Function<Set<Integer>, PreparedStatement>, Pool<Set<Integer>, PreparedStatement>> poolCreator) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, autoGeneratedKeys), poolCreator, this);
}
@Override
public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, columnIndexes), getPoolCreator(), this);
return prepareStatementInternal(sql, columnIndexes, getPoolCreator());
}
public PreparedStatement prepareStatementOpt(String sql, int[] columnIndexes) throws SQLException {
return prepareStatementInternal(sql, columnIndexes, SingletonPool::new);
}
public PreparedStatement prepareStatementCorrect(String sql, int[] columnIndexes) throws SQLException {
return prepareStatementInternal(sql, columnIndexes, ReuseLastPool::new);
}
private PreparedStatement prepareStatementInternal(String sql, int[] columnIndexes, Function<Function<Set<Integer>, PreparedStatement>, Pool<Set<Integer>, PreparedStatement>> poolCreator) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, columnIndexes), poolCreator, this);
}
@Override
public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, columnNames), getPoolCreator(), this);
return prepareStatementInternal(sql, columnNames, getPoolCreator());
}
public PreparedStatement prepareStatementOpt(String sql, String[] columnNames) throws SQLException {
return prepareStatementInternal(sql, columnNames, SingletonPool::new);
}
public PreparedStatement prepareStatementCorrect(String sql, String[] columnNames) throws SQLException {
return prepareStatementInternal(sql, columnNames, ReuseLastPool::new);
}
private PreparedStatement prepareStatementInternal(String sql, String[] columnNames, Function<Function<Set<Integer>, PreparedStatement>, Pool<Set<Integer>, PreparedStatement>> poolCreator) throws SQLException {
return new PstmtNullSafe(sql, sqlNullSafe -> underlying.prepareStatement(sqlNullSafe, columnNames), poolCreator, this);
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment