承接【Spring事務管理】,上一篇我們已經簡單接觸了關於Spring jdbc的知識,今天我們承接上一篇進行一下補充,上一篇直接將dataSource註入到了Dao層進行了實現,本篇我們通過簡單進行一下補充,將另外兩種實現為大家進行一下演示:1、在自己定義的DAO 實現類中註入一個DataSour ...
承接【Spring事務管理】,上一篇我們已經簡單接觸了關於Spring jdbc的知識,今天我們承接上一篇進行一下補充,上一篇直接將dataSource註入到了Dao層進行了實現,本篇我們通過簡單進行一下補充,將另外兩種實現為大家進行一下演示:1、在自己定義的DAO 實現類中註入一個DataSource 引用來完 成JdbcTemplate 的實例化。也就是它是從外部“註入” DataSource 到DAO 中,然後 自己實例化JdbcTemplate,然後將DataSource 設置到JdbcTemplate 對象中,源碼下載;2、 在 Spring 的 IoC 容器中配置一個 JdbcTemplate 的 bean,將 DataSource 註入進來,然後再把JdbcTemplate 註入到自定義DAO 中,源碼下載;3、Spring 提供了 org.springframework.jdbc.core.support.JdbcDaoSupport 類 , 這 個 類 中 定 義 了 JdbcTemplate 屬性,也定義了DataSource 屬性,當設置DataSource 屬性的時候,會創 建jdbcTemplate 的實例,所以我們自己編寫的DAO 只需要繼承JdbcDaoSupport 類, 然後註入DataSource 即可,源碼下載。提倡採用第三種方法。
對於第一種實現,我們在上一篇博客中已經進行了探討,在這裡就不再贅述,本篇一起來看一下另外兩種:
1、JdbcTemplate 方式註入Dao
a、修改我們的applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> <context:property-placeholder location="classpath:db.properties"/> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.dirverClass}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="blankService" class="com.edu.hpugs.spring.BlankServiceImpl"> <property name="blankDao" ref="blankDao"></property> </bean> <bean id="blankDao" class="com.edu.hpugs.spring.BlankDaoImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> </beans>
b、修改Dao:
public class BlankDaoImpl implements IBlankDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public void outMonery(String userName, double monery) { // TODO Auto-generated method stub String sql = "UPDATE userAccount SET monery = monery - ? WHERE name = ?"; jdbcTemplate.update(sql, monery, userName); } public void inMonery(String userName, double monery) { // TODO Auto-generated method stub String sql = "UPDATE userAccount SET monery = monery + ? WHERE name = ?"; jdbcTemplate.update(sql, monery, userName); } }
ok,完成
2、下麵看一下基於繼承JdbcDaoSupport的實現:
我們的無需修改applicationContext.xml文件,只需Dao類繼承一下JdbcDaoSupport:
public class BlankDaoImpl extends JdbcDaoSupport implements IBlankDao { public void outMonery(String userName, double monery) { // TODO Auto-generated method stub String sql = "UPDATE userAccount SET monery = monery - ? WHERE name = ?"; this.getJdbcTemplate().update(sql, monery, userName); } public void inMonery(String userName, double monery) { // TODO Auto-generated method stub String sql = "UPDATE userAccount SET monery = monery + ? WHERE name = ?"; this.getJdbcTemplate().update(sql, monery, userName); } }
好了到這裡關於補充內容就介紹完畢,如有不當之處,還望批評指正。謝謝