From 9e3baaae7359431c6e48df0249f62f1604cc7019 Mon Sep 17 00:00:00 2001 From: Voomra Date: Mon, 3 Mar 2025 21:04:16 +0300 Subject: [PATCH] =?UTF-8?q?remove:=20=D0=B8=D0=B7=D0=BB=D0=B8=D1=88=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/di9/jdbc/JdbcTemplate.java | 21 +-- .../java/ru/di9/jdbc/JdbcTemplateImpl.java | 106 +------------- .../di9/jdbc/JdbcTemplateTransactional.java | 132 ------------------ .../ru/di9/jdbc/ReturnGeneratedKeyHelper.java | 10 -- 4 files changed, 5 insertions(+), 264 deletions(-) delete mode 100644 src/main/java/ru/di9/jdbc/JdbcTemplateTransactional.java delete mode 100644 src/main/java/ru/di9/jdbc/ReturnGeneratedKeyHelper.java diff --git a/src/main/java/ru/di9/jdbc/JdbcTemplate.java b/src/main/java/ru/di9/jdbc/JdbcTemplate.java index e079cf8..a4472c3 100644 --- a/src/main/java/ru/di9/jdbc/JdbcTemplate.java +++ b/src/main/java/ru/di9/jdbc/JdbcTemplate.java @@ -3,34 +3,15 @@ package ru.di9.jdbc; import org.intellij.lang.annotations.Language; import java.util.List; -import java.util.Optional; -import java.util.function.Consumer; public interface JdbcTemplate { - void execute(@Language("GenericSQL") String sql) throws DataAccessException; - - void execute(@Language("GenericSQL") String sql, PreparedStatementProcessor psp) throws DataAccessException; - T query(@Language("GenericSQL") String sql, ResultSetExtractor rse) throws DataAccessException; - T query(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, ResultSetExtractor rse) + void query(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, ResultSetExtractor rse) throws DataAccessException; - Optional queryOne(@Language("GenericSQL") String sql, ResultSetExtractor rse) - throws DataAccessException; - - Optional queryOne(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, - ResultSetExtractor rse) throws DataAccessException; - List queryList(@Language("GenericSQL") String sql, final RowMapper rowMapper) throws DataAccessException; - List queryList(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, - final RowMapper rowMapper) throws DataAccessException; - - T insert(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, - ResultSetExtractor processGeneratedKey) throws DataAccessException; - - void transaction(Consumer consumer); } diff --git a/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java b/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java index 51becac..1382515 100644 --- a/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java +++ b/src/main/java/ru/di9/jdbc/JdbcTemplateImpl.java @@ -7,9 +7,8 @@ import java.sql.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Optional; -import java.util.function.Consumer; +@SuppressWarnings("SqlSourceToSinkFlow") public class JdbcTemplateImpl implements JdbcTemplate { private final DataSource dataSource; @@ -17,27 +16,6 @@ public class JdbcTemplateImpl implements JdbcTemplate { this.dataSource = dataSource; } - @Override - public void execute(@Language("GenericSQL") String sql) throws DataAccessException { - try (Connection connection = dataSource.getConnection(); - Statement statement = connection.createStatement()) { - statement.execute(sql); - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - - @Override - public void execute(@Language("GenericSQL") String sql, PreparedStatementProcessor psp) throws DataAccessException { - try (Connection connection = dataSource.getConnection(); - PreparedStatement preparedStatement = connection.prepareStatement(sql)) { - psp.process(preparedStatement); - preparedStatement.execute(); - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - @Override public T query(@Language("GenericSQL") String sql, ResultSetExtractor rse) throws DataAccessException { try (Connection connection = dataSource.getConnection(); @@ -50,101 +28,25 @@ public class JdbcTemplateImpl implements JdbcTemplate { } @Override - public T query(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, - ResultSetExtractor rse) throws DataAccessException { + public void query(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, + ResultSetExtractor rse) throws DataAccessException { try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { psp.process(preparedStatement); try (ResultSet resultSet = preparedStatement.executeQuery()) { - return rse.extractData(resultSet); + rse.extractData(resultSet); } } catch (SQLException e) { throw throwDataAccessException(sql, e); } } - @Override - public Optional queryOne(@Language("GenericSQL") String sql, - ResultSetExtractor rse) throws DataAccessException { - return query(sql, rs -> { - if (rs.next()) { - return Optional.ofNullable(rse.extractData(rs)); - } else { - return Optional.empty(); - } - }); - } - - @Override - public Optional queryOne(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, - ResultSetExtractor rse) throws DataAccessException { - return query(sql, psp, rs -> { - if (rs.next()) { - return Optional.ofNullable(rse.extractData(rs)); - } else { - return Optional.empty(); - } - }); - } - @Override public List queryList(@Language("GenericSQL") String sql, final RowMapper rowMapper) throws DataAccessException { return query(sql, createResultSetExtractorList(rowMapper)); } - @Override - public List queryList(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, - final RowMapper rowMapper) throws DataAccessException { - return query(sql, psp, createResultSetExtractorList(rowMapper)); - } - - @Override - public T insert(@Language("GenericSQL") String sql, PreparedStatementProcessor psp, - ResultSetExtractor processGeneratedKey) throws DataAccessException { - try (Connection connection = dataSource.getConnection(); - PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { - psp.process(preparedStatement); - preparedStatement.execute(); - try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) { - generatedKeys.next(); - return processGeneratedKey.extractData(generatedKeys); - } - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - - @Override - public void transaction(Consumer consumer) { - Connection connection = null; - try { - connection = dataSource.getConnection(); - connection.createStatement().execute("BEGIN TRANSACTION"); - consumer.accept(new JdbcTemplateTransactional(connection)); - connection.createStatement().execute("COMMIT"); - } catch (SQLException e) { - if (connection != null) { - try { - connection.createStatement().execute("ROLLBACK"); - throw new DataAccessException("Error transaction", e); - } catch (SQLException e1) { - DataAccessException exception = new DataAccessException("Error rollback", e1); - exception.addSuppressed(e1); - throw exception; - } - } - } finally { - if (connection != null) { - try { - connection.close(); - } catch (SQLException e) { - throw new DataAccessException("Error close connection", 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 deleted file mode 100644 index b5b6d46..0000000 --- a/src/main/java/ru/di9/jdbc/JdbcTemplateTransactional.java +++ /dev/null @@ -1,132 +0,0 @@ -package ru.di9.jdbc; - -import lombok.RequiredArgsConstructor; - -import java.sql.*; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.function.Consumer; - -import static ru.di9.jdbc.JdbcTemplateImpl.throwDataAccessException; - -@RequiredArgsConstructor -public class JdbcTemplateTransactional implements JdbcTemplate, AutoCloseable { - private final Connection connection; - - @Override - public void close() throws Exception { - connection.close(); - } - - @Override - public void execute(String sql) throws DataAccessException { - try (Statement statement = connection.createStatement()) { - statement.execute(sql); - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - - @Override - public void execute(String sql, PreparedStatementProcessor psp) throws DataAccessException { - try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { - psp.process(preparedStatement); - preparedStatement.execute(); - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - - @Override - public T query(String sql, ResultSetExtractor rse) throws DataAccessException { - try (Statement statement = connection.createStatement(); - ResultSet resultSet = statement.executeQuery(sql)) { - return rse.extractData(resultSet); - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - - @Override - public T query(String sql, PreparedStatementProcessor psp, ResultSetExtractor rse) throws DataAccessException { - try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { - psp.process(preparedStatement); - try (ResultSet resultSet = preparedStatement.executeQuery()) { - return rse.extractData(resultSet); - } - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - - @Override - public Optional queryOne(String sql, ResultSetExtractor rse) throws DataAccessException { - return query(sql, rs -> { - if (rs.next()) { - return Optional.ofNullable(rse.extractData(rs)); - } else { - return Optional.empty(); - } - }); - } - - @Override - public Optional queryOne(String sql, PreparedStatementProcessor psp, ResultSetExtractor rse) throws DataAccessException { - return query(sql, psp, rs -> { - if (rs.next()) { - return Optional.ofNullable(rse.extractData(rs)); - } else { - return Optional.empty(); - } - }); - } - - @Override - public List queryList(String sql, RowMapper rowMapper) throws DataAccessException { - return query(sql, createResultSetExtractorList(rowMapper)); - } - - @Override - public List queryList(String sql, PreparedStatementProcessor psp, RowMapper rowMapper) throws DataAccessException { - return query(sql, psp, createResultSetExtractorList(rowMapper)); - } - - @Override - public T insert(String sql, PreparedStatementProcessor psp, ResultSetExtractor processGeneratedKey) throws DataAccessException { - try (PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { - psp.process(preparedStatement); - preparedStatement.execute(); - try (ResultSet generatedKeys = preparedStatement.getGeneratedKeys()) { - generatedKeys.next(); - return processGeneratedKey.extractData(generatedKeys); - } - } catch (SQLException e) { - throw throwDataAccessException(sql, e); - } - } - - @Override - public void transaction(Consumer consumer) { - consumer.accept(this); - } - - private ResultSetExtractor> createResultSetExtractorList(final RowMapper rowMapper) { - return rs -> { - List resultList; - int rowNum = 0; - if (rs.next()) { - resultList = new ArrayList<>(); - - do { - resultList.add(rowMapper.mapRow(rs, rowNum++)); - } while (rs.next()); - } else { - resultList = Collections.emptyList(); - } - - return resultList; - }; - } -} diff --git a/src/main/java/ru/di9/jdbc/ReturnGeneratedKeyHelper.java b/src/main/java/ru/di9/jdbc/ReturnGeneratedKeyHelper.java deleted file mode 100644 index 86e6a46..0000000 --- a/src/main/java/ru/di9/jdbc/ReturnGeneratedKeyHelper.java +++ /dev/null @@ -1,10 +0,0 @@ -package ru.di9.jdbc; - -import lombok.AccessLevel; -import lombok.NoArgsConstructor; - -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class ReturnGeneratedKeyHelper { - public static final ResultSetExtractor RETURN_GENERATED_KEY_FIRST_LONG = rs -> rs.getLong(1); - public static final ResultSetExtractor RETURN_GENERATED_KEY_FIRST_INT = rs -> rs.getInt(1); -}