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) 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); void update(@Language("GenericSQL") String sql, PreparedStatementProcessor psp); }