Примеры 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 КБ)