一、概述
使用Spring进行基本的JDBC访问数据库有多种选择。Spring至少提供了三种不同的工作模式:Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式。三种模式如下:
- JdbcTemplate:是Spring中最基本的JDBC模板, 利用JDBC和简单的索引参数查询对数据库进行简单访问
- NamedParameterJdbcTemplate:能够在查询的时候把值绑定到SQL里的命名参数,而不是索引参数
NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干 - SimpleJdbcTemplate:利用Java5的特性,比如自动装箱、通用和可变参数列表来简化JDBC模板的使用SimpleJdbcTemplate内部包含了一个NamedParameterJdbcTemplate
NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。
NamedParameterJdbcTemplate能做的事情SimpleJdbcTemplate都能干,SimpleJdbcTemplate相对于NamedParameterJdbcTemplate主要增加了JDK5.0的泛型和可变长度参数支持。
下面主要来讲 JdbcTemplate:
JdbcTemplate类通过模板设计模式帮助我们消除了冗长的代码,只做需要做的事情(即可变部分),并且帮我们做哪些固定部分,如连接的创建及关闭。 JdbcTemplate类对可变部分采用回调接口方式实现,如ConnectionCallback通过回调接口返回给用户一个连接,从而可以使用该连 接做任何事情、StatementCallback通过回调接口返回给用户一个Statement,从而可以使用该Statement做任何事情等等,还 有其他一些回调接口如图所示。
Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现:(注:使用了Spring JDBC抽象框架之后,应用开发人员只需要完成斜体字部分的编码工作。)
- 定义数据库连接参数
- 打开数据库连接
- 声明SQL语句
- 预编译并执行SQL语句
- 遍历查询结果(如果需要的话)
- 处理每一次遍历操作
- 处理抛出的任何异常
- 处理事务
- 关闭数据库连接
Spring将替我们完成所有使用JDBC API进行开发的单调乏味的、底层细节处理工作。
二、使用步骤
1、使用JdbcTemplate来访问数据
只需要配置DataSource就能够让JdbcTemplate工作,如下配置:
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="christmas258@" />
</bean>
<!--配置一个JdbcTemplate实例,并将这个“共享的”,“安全的”实例注入到不同的DAO类中去 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
2、现在我们可以把JdbcTemplate装配到DAO,使用它来访问数据库
@Autowired
private JdbcTemplate jdbcTemplate;
3、开始操作数据库,如下面的插入
@Override
public void insert(Student student) {
jdbcTemplate.update("INSERT INTO student VALUES('" + student.getId()
+ "', '" + student.getName() + "', '" + student.getAge()
+ "', '" + student.getSex() + "')");
}
三、使用范例
这里我们要实例Spring Jdbc和Mysql数据库连接,建表、执行插入、查找、删除等功能。
1、新建一个JavaProject工程,导入包mysql-connector-java-5.1.22-bin.jar+spring3.2+commons-logging-1.2.jar
2、首先先建好数据库对应的Model:
package com.mucfc.model;
/**
*数据库传输类
*/
public class Student {