Spring自學教程-jabc編程詳解、RowMapper使用(三)


一、JDBC

1、JDBC的編程特點

     靜態代碼+動態變量 = jdbc編程。在spring中動態變量可以用注入的形式給予。這樣的編程方式適合包裝成模板。靜態代碼構成了模板,而動態變量則是需要傳入的參數。

2、Spring引入JDBC

    配置文件中配置數據庫的連接

1
2
3
4
5
6
7
8
9
<!--
        配置dbcp的數據庫連接池
    -->
    < bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource" >
        < property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
        < property name = "url" value = "jdbc:mysql://localhost:3306/hibernate0909" />
        < property name = "username" value = "root" />
        < property name = "password" value = "root" />
    </ bean >

配置好后,我們就可以在客戶端進行連接了,下面說些JdbcTemplate的事情。


首先我們看下JdbcTemplate類,我們找到第一個划紅圈的地方,就是我們在spring中配置的DataSource注入到JdbcTemplate中,我們就可以使用JdbcTemplate模板了。

JdbcTemplate把所有的對數據庫的操作都封裝在了一起,第二個紅圈就是我們想要的結果,這樣省去了我們自己寫的函數了,很像是別人寫的類我們直接拿來用一樣。。。。

那我們怎樣把DataSource傳遞給JdbcTemplate呢?

下面我們看看這些相關的類是怎樣調用的,也就是怎樣依賴注入的



這樣我們就可以看出來他們的關系了,那我們就可以很直接的在客戶端將DataSource注入到JdbcTemplate中了


下面介紹三種方案來進行注入。。。

(1)客戶端通過繼承JdbcDaoSupport來進行注入


在JdbcDaoTemplate中有個setDataSource的set方法我們就可以注入datasource


然后調用createJdbcTemplate


之后在調用JdbcTemplate


這樣才真正的傳入datasource了,相關的配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--
        配置dbcp的數據庫連接池
    -->
    < bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource" >
        < property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
        < property name = "url" value = "jdbc:mysql://localhost:3306/hibernate0909" />
        < property name = "username" value = "root" />
        < property name = "password" value = "root" />
    </ bean >
    
    < bean id = "personDao" class = "cn.itcast.spring0909.jdbc.PersonDaoImpl" >
        < property name = "dataSource" >
            < ref bean = "dataSource" />
        </ property >
    </ bean >


(2)直接引入JdbcTemplate就行了


相關的配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
< bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate" >
     < property name = "dataSource" >
         < ref bean = "dataSource" />
     </ property >
</ bean >
 
< bean id = "personDao2" class = "cn.itcast.spring0909.jdbc.PersonDaoImpl2" >
     < property name = "jdbcTemplate" >
         < ref bean = "jdbcTemplate" />
     </ property >
</ bean >


(3)直接繼承JdbcTemplate,通過構造函數向他的父類中傳入datasource


相關的配置文件如下:

1
2
3
< bean id = "personDao3" class = "cn.itcast.spring0909.jdbc.PersonDaoImpl2" >
     < constructor-arg index = "0" ref = "dataSource" ></ constructor-arg >
</ bean >


二、RowMapper的使用

 可以通過建立內部類實現RowMapper接口,RowMapper中有一個mapRow方法,所以實現RowMapper接口一定要實現mapRow方法,而對自定義類的包裝就在mapRow方法中實現.

下面說下他的原理是什么樣的。。。就像我們自己寫的RowMapper接口一樣,只是spring中已經封裝好了此類。








免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM