Примеры Spring + JdbcTemplate + JdbcDaoSupport
При разработке Spring JDBC вы можете использовать классыJdbcTemplate
иJdbcDaoSupport
, чтобы упростить общие процессы работы с базой данных.
В этом руководстве мы повторно используем последнийSpring + JDBC example, чтобы увидеть разницу между примерами до (без поддержки 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
Благодаря расширению JdbcDaoSupport, установке источника данных и 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() }); }
Note
При разработке Spring JDBC всегда рекомендуется использоватьJdbcTemplate
иJdbcDaoSupport
вместо кодирования кода JDBC самостоятельно.
Скачать исходный код
Скачать -Spring-JDBC-Example.zip (15 КБ)