最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解spring與jdbc整合操作

 更新時(shí)間:2016年10月25日 17:21:22   作者:woonu  
這篇文章主要為大家詳細(xì)介紹了spring與jdbc整合操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

先上一段簡(jiǎn)單示例

public class MyTemplate {

  private DataSource dataSource;

  public DataSource getDataSource() {
    return dataSource;
  }

  public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
  }
  
  public void insert(String sql) throws SQLException{
    Connection conn = this.dataSource.getConnection();
    Statement stmt = conn.createStatement();
    stmt.executeUpdate(sql);
    stmt.close();
    conn.close();
  }
}

Dao類

public class PersonDao extends MyTemplate{

  public void savePerson() throws Exception{
    this.insert("insert into person(pid,pname) values(3,'aaa')");
  }
}

spring配置文件

 <!-- 
    引入properties配置文件
   -->
  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <value>classpath:jdbc.properties</value>
    </property>
  </bean>
  
  <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
  </bean>
  
  <bean id="myTemplate" class="cn.qjc.jdbc.dao.MyTemplate">
    <!-- setter注入 -->
    <property name="dataSource">
      <ref bean="dataSource"/>
    </property>
  </bean>
  
  <bean id="personDao" class="cn.qjc.jdbc.dao.PersonDao">
    <property name="dataSource">
      <ref bean="dataSource"/>
    </property>
  </bean>

</beans>

測(cè)試類

public class PersonDaoTest {

  @Test
  public void testPersonDao() throws Exception{
    ApplicationContext context = new ClassPathXmlApplicationContext("cn/qjc/jdbc/applicationContext.xml");
    PersonDao personDao = (PersonDao)context.getBean("personDao");
    personDao.savePerson();
  }
}

以上代碼將DataSource注入給MyTemplate,再把DataSource注入給PersonDao,因?yàn)閜ersonDao繼承MyTemplate,所以擁有Datasource屬性。既然PersonDao繼承MyTemplate,所以PersonDao類注入可以改為

<bean id="personDao" class="cn.qjc.jdbc.dao.PersonDao" parent="myTemplate"></bean>

以上例子中MyTemplate類似于設(shè)計(jì)模式中的模板模式也叫模板方法模式,模板方法模式是所有模式中最為常見的幾個(gè)模式之一,是基于繼承的代碼復(fù)用的基本技術(shù)。

  模板模式 = 靜態(tài)代碼+動(dòng)態(tài)變量

在spring中動(dòng)態(tài)變量可以用注入的形式給予。這樣的編程方式適合包裝成模板。靜態(tài)代碼構(gòu)成了模板,而動(dòng)態(tài)變量則是需要傳入的參數(shù)。

spring與jdbc結(jié)合核心類JdbcTemplate

  1、基于模板的設(shè)置(為什么可以設(shè)置成基于模板的形式)

  2、完成了資源的創(chuàng)建和釋放的工作

  3、簡(jiǎn)化為我們對(duì)JDBC的操作

  4、完成了對(duì)JDBC的核心流程的工作,包括SQL語(yǔ)句的創(chuàng)建和執(zhí)行

  5、僅需要傳遞DataSource就可以把它實(shí)例化

  6、JdbcTemplate只需要?jiǎng)?chuàng)建一次

  7、JdbcTemplate是線程安全類

使用spring+jdbc修改上面例子(myTemplate類去掉)

public class PersonDao extends JdbcDaoSupport {
  public void savePerson(String sql){
    this.getJdbcTemplate().execute(sql);
  }
}

spring配置文件改為

<bean id="personDao" class="cn.qjc.jdbc.dao.PersonDao">
    <property name="dataSource">
      <ref bean="dataSource"/>
    </property>
</bean>

JdbcTemplate類結(jié)構(gòu)圖

執(zhí)行過程

說明:

    1、執(zhí)行數(shù)據(jù)的操作的是JdbcTemplate

    2、最根本的步驟就是要把dataSource注入到JdbcTemplate

    3、通過給JdbcTemplate注入dataSource

           a、采用構(gòu)造器的形式注入

           b、采用setter方法進(jìn)行注入

    4、可以給JdbcDaoSupport注入dataSource

    5、可以給JdbcDaoSupport注入JdbcTemplate

所以spring與jdbc整合有三種方法,但實(shí)際上核心類為JdbcTemplate

 1、使用JdbcTemplate

       在Dao類中,用JdbcTemplate作為屬性,用spring對(duì)JdbcTemplate進(jìn)行注入。再對(duì)JdbcTemplate進(jìn)行DataSource注入。

       注:為什么只要對(duì)JdbcTemplate注入DataSource就可以了?

 2、繼承jdbcDaoSupport

      在Dao類中,繼承JdbcDaoSupport。因?yàn)镴dbcDaoSupport已經(jīng)有了JdbcTemplate的引用,所以只要繼承JdbcDaoSupport就相當(dāng)于有了JdbcTemplate屬性。

 3、繼承JdbcTemplate

spring還提供了其他ORM框架整合模式都差不多,完全可直接套用。

spring+hibernate

spring+Jdo

由此可看出spring IOC 和 DI 的強(qiáng)大,IOC和DI 完成了從接口到類的對(duì)應(yīng)。利用spring容器程序員很容易的在客戶端實(shí)現(xiàn)面向接口編程,而且很容易給接口裝配,結(jié)構(gòu)也可以設(shè)置的很靈活。因?yàn)榻涌谑亲约簩懙?,類也是自己寫的,配置文件也是自己寫的。spring實(shí)際完成了創(chuàng)建對(duì)象和裝配的工作,它會(huì)自動(dòng)的對(duì)應(yīng)起來(lái)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的示例代碼

    Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的示例代碼

    這篇文章主要介紹了Springboot+MybatisPlus+Oracle實(shí)現(xiàn)主鍵自增的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目

    基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目

    這篇文章主要介紹了基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開

    java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開

    這篇文章主要為大家介紹了java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開的問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解Spring Aop實(shí)例之AspectJ注解配置

    詳解Spring Aop實(shí)例之AspectJ注解配置

    本篇文章主要介紹了詳解Spring Aop實(shí)例之AspectJ注解配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-04-04
  • 詳解Java實(shí)現(xiàn)負(fù)載均衡的幾種算法代碼

    詳解Java實(shí)現(xiàn)負(fù)載均衡的幾種算法代碼

    本篇文章主要介紹了詳解Java實(shí)現(xiàn)負(fù)載均衡的幾種算法代碼 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-02-02
  • java8使用流的filter來(lái)篩選數(shù)據(jù)的實(shí)現(xiàn)

    java8使用流的filter來(lái)篩選數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了java8使用流的filter來(lái)篩選數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • JAVA.io讀寫文件方式匯總

    JAVA.io讀寫文件方式匯總

    這篇文章主要介紹了幾種JAVA.io讀寫文件方式,文中代碼非常詳細(xì),幫助大家更好的理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 詳解springSecurity之java配置篇

    詳解springSecurity之java配置篇

    這篇文章主要介紹了詳解springSecurity之java配置篇,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 淺談SpringBoot中的Bean初始化方法?@PostConstruct

    淺談SpringBoot中的Bean初始化方法?@PostConstruct

    這篇文章主要介紹了SpringBoot中的Bean初始化方法?@PostConstruct,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java8 Math新增方法介紹

    java8 Math新增方法介紹

    這篇文章主要介紹了java8 Math新增方法介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-08-08

最新評(píng)論

和硕县| 盐城市| 汨罗市| 上虞市| 连江县| 石河子市| 马龙县| 芦溪县| 黄大仙区| 正镶白旗| 嵩明县| 神农架林区| 北京市| 华容县| 靖安县| 塘沽区| 万山特区| 阿勒泰市| 新民市| 临清市| 同德县| 合山市| 体育| 西和县| 鹤庆县| 大兴区| 大宁县| 石棉县| 柳州市| 句容市| 巨鹿县| 宁津县| 新宾| 德惠市| 贡嘎县| 阿合奇县| 金沙县| 大石桥市| 洱源县| 扎赉特旗| 晋宁县|