Spring JdbcTemplate+JdbcDaoSupport實例

在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()  
    });

}

<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/yiibaijava" />
    <property name="username" value="root" />
    <property name="password" value="password" />
</bean>

<bean id="customerDAO" class="com.yiibai.customer.dao.impl.JdbcCustomerDAO">
    <property name="dataSource" ref="dataSource" />
</bean>

**注: ** 在Spring JDBC開發,它總是建議使用,總是建議使用 JdbcTemplate和JdbcDaoSupport,而不使用自己的JDBC編程代碼。

下載代碼  –  http://pan.baidu.com/s/1bnIGdiR