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 = "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 = "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中已经封装好了此类。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。