diff --git a/build.gradle b/build.gradle index 12648dd..6186e20 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group 'ru.di9' -version '1.9' +version '1.9.1' repositories { mavenCentral() diff --git a/src/main/java/ru/di9/jdbc/JdbcTemplate.java b/src/main/java/ru/di9/jdbc/JdbcTemplate.java index e079cf8..11e6be3 100644 --- a/src/main/java/ru/di9/jdbc/JdbcTemplate.java +++ b/src/main/java/ru/di9/jdbc/JdbcTemplate.java @@ -33,4 +33,6 @@ public interface JdbcTemplate { ResultSetExtractor processGeneratedKey) throws DataAccessException; void transaction(Consumer consumer); + + void update(@Language("GenericSQL") String sql, PreparedStatementProcessor psp); } diff --git a/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java b/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java index 038e181..61a4cca 100644 --- a/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java +++ b/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java @@ -145,6 +145,17 @@ public class JdbcTemplateImpl implements JdbcTemplate { } } + @Override + public void update(String sql, PreparedStatementProcessor psp) { + try (PreparedStatement statement = dataSource.getConnection().prepareStatement(sql)){ + psp.process(statement); + + statement.executeUpdate(); + }catch (SQLException e){ + throw throwDataAccessException(sql, e); + } + } + private ResultSetExtractor> createResultSetExtractorList(final RowMapper rowMapper) { return rs -> { List resultList; diff --git a/src/main/java/ru/di9/jdbc/JdbcTemplateTransactional.java b/src/main/java/ru/di9/jdbc/JdbcTemplateTransactional.java index b5b6d46..4e53eb7 100644 --- a/src/main/java/ru/di9/jdbc/JdbcTemplateTransactional.java +++ b/src/main/java/ru/di9/jdbc/JdbcTemplateTransactional.java @@ -112,6 +112,17 @@ public class JdbcTemplateTransactional implements JdbcTemplate, AutoCloseable { consumer.accept(this); } + @Override + public void update(String sql, PreparedStatementProcessor psp) { + try (PreparedStatement statement = connection.prepareStatement(sql)) { + psp.process(statement); + + statement.executeUpdate(); + } catch (SQLException e) { + throw throwDataAccessException(sql, e); + } + } + private ResultSetExtractor> createResultSetExtractorList(final RowMapper rowMapper) { return rs -> { List resultList;