在Spring 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示例
通過擴展 JdbcDaoSupport,設置數據源,並且 JdbcTemplate 在你的類中不再是必需的,只需要正確的數據源注入JdbcCustomerDAO。可以使用 getJdbcTemplate()方法得到 JdbcTemplate。
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()
});
}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/zaixianjava" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="customerDAO" class="com.zaixian.customer.dao.impl.JdbcCustomerDAO"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
注: 在Spring JDBC開發,它總是建議使用,總是建議使用 JdbcTemplate和JdbcDaoSupport,而不使用自己的JDBC編程代碼。
上一篇:
Spring+JDBC實例
下一篇:
Spring JdbcTemplate查詢實例
