В весенней разработке JDBC вы можете использовать JdbcTemplate
и JdbcDaoSupport
классы для упрощения общих процессов работы с базой данных.
В этом уроке мы повторно используем последний пример Spring + JDBC , чтобы увидеть разницу между примером до (без поддержки JdbcTemplate) и после (с поддержкой JdbcTemplate).
1. Пример Без JdbcTemplate
Без JdbcTemplate вам необходимо создать множество избыточных кодов (создать соединение, закрыть соединение, обработать исключение) во всех методах работы с базой данных DAO – вставить, обновить и удалить. Это просто неэффективно, некрасиво, подвержено ошибкам и утомительно.
private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; Connection conn = null; try { conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, customer.getCustId()); ps.setString(2, customer.getName()); ps.setInt(3, customer.getAge()); ps.executeUpdate(); ps.close(); } catch (SQLException e) { throw new RuntimeException(e); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) {} } } }
2. Пример С JdbcTemplate
С помощью JdbcTemplate вы экономите много времени на вводе избыточных кодов, потому что JdbcTemplate будет обрабатывать их автоматически.
private DataSource dataSource; private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update(sql, new Object[] { customer.getCustId(), customer.getName(),customer.getAge() }); }
Видите разницу?
3. Пример С поддержкой JdbcDaoSupport
Расширяя поддержку JDBCDAOS, установите источник данных, и JdbcTemplate в вашем классе больше не требуется, вам просто нужно ввести правильный источник данных в JdbcCustomerDAO. И вы можете получить JdbcTemplate с помощью метода getJdbcTemplate().
public class JdbcCustomerDAO extends JdbcDaoSupport implements CustomerDAO { //no need to set datasource here public void insert(Customer customer){ String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; getJdbcTemplate().update(sql, new Object[] { customer.getCustId(), customer.getName(),customer.getAge() }); }
Скачать Исходный Код
Оригинал: “https://mkyong.com/spring/spring-jdbctemplate-jdbcdaosupport-examples/”