在Spring
JDBC开发
,
你
可以使用
的JdbcTemplate
和
JdbcDaoSupport
类来
简化
整个数据库的
操作
流程。
在本教程中 , 我们 将重用 去年春天 + JDBC 例如,要查看 之前 (无 JdbcTemplate的 支持)和 后 之间的 不同 (与 JdbcTemplate的 支持 )的例子。 JdbcTemplate的,你必须创建许多冗余代码(创建连接,关闭连接,处理异常)在所有DAO数据库的操作方法 - 插入,更新和删除。它只是没有效率的,丑陋的,容易出错和繁琐。
在本教程中 , 我们 将重用 去年春天 + JDBC 例如,要查看 之前 (无 JdbcTemplate的 支持)和 后 之间的 不同 (与 JdbcTemplate的 支持 )的例子。 JdbcTemplate的,你必须创建许多冗余代码(创建连接,关闭连接,处理异常)在所有DAO数据库的操作方法 - 插入,更新和删除。它只是没有效率的,丑陋的,容易出错和繁琐。
1. Example Without JdbcTemplate
没有
- 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) {}
- }
- }
- }
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、Example With 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()
- });
- }
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、Example With 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()
- });
- }
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/mkyongjava" />
- <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.mkyong.customer.dao.impl.JdbcCustomerDAO">
- <property name="dataSource" ref="dataSource" />
- </bean>
- </beans>