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把所有的对数据库的操作都封装在了一起,第二个红圈就是我们想要的结果,这样省去了我们自己写的函数了,很像是别人写的类我们直接拿来用一样。。。。

212057313391188.png

那我们怎样把DataSource传递给JdbcTemplate呢?

下面我们看看这些相关的类是怎样调用的,也就是怎样依赖注入的

212057343397704.png

212057353195633.png

这样我们就可以看出来他们的关系了,那我们就可以很直接的在客户端将DataSource注入到JdbcTemplate中了


下面介绍三种方案来进行注入。。。

(1)客户端通过继承JdbcDaoSupport来进行注入

212057356548204.png

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

212057363692591.png

然后调用createJdbcTemplate

212057368188891.png

之后在调用JdbcTemplate

212057370593435.png

这样才真正的传入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就行了

212057373581992.png

相关的配置文件如下:

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

212057379199862.png

相关的配置文件如下:

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方法中实现.

212057385212679.png

下面说下他的原理是什么样的。。。就像我们自己写的RowMapper接口一样,只是spring中已经封装好了此类。

212057389745751.png







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值