Jdbc编程特点
静态代码+动态变量 = jdbc编程。在spring中动态变量可以用注入的形式给予。这样的编程方式适合包装成模板。静态代码构成了模板,而动态变量则是需要传入的参数。
引入DataSource
在spring中注入DataSource
核心类JdbcTemplate
1、 基于模板的设置(为什么可以设置成基于模板的形式)
2、 完成了资源的创建和释放的工作
3、 简化为我们对JDBC的操作
4、 完成了对JDBC的核心流程的工作,包括SQL语句的创建和执行
5、 仅需要传递DataSource就可以把它实例化
6、 JdbcTemplate只需要创建一次
7、 JdbcTemplate是线程安全类
使用JdbcTemplate
在Dao类中,用JdbcTemplate作为属性,用spring对JdbcTemplate进行注入。再对JdbcTemplate进行DataSource注入。
注:为什么只要对JdbcTemplate注入DataSource就可以了?
继承JdbcDaoSupport
在Dao类中,继承JdbcDaoSupport。因为JdbcDaoSupport已经有了JdbcTemplate的引用,所以只要继承JdbcDaoSupport就相当于有了JdbcTemplate属性。
使用properties文件
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>jdbc.properties</value>
</list>
</property>
</bean>
配置dbcp的数据库连接池
使用properties文件配置dbcp的数据库连接池
引入DataSource的几种方式
方式一:继承JdbcDaoSupport直接引入
方式二:不继承JdbcDaoSupport使用set方法引入
方式三:继承JdbcTemplate使用构造函数引入
RowMapper的使用
1、 产生原因:在Jdbc的操作中,有很多情况下是要将ResultSet里的数据封装到一个持久化Bean里,再把持久化Bean封装到集合中。这样会造成大量的代码的重复,不利于代码重用。而RowMapper正好解决了这个问题。
2、 使用:
a、 写一个类实现RowMapper接口
b、 在回调接口中,作为参数进行传入即可。
例如: