前言:
本文指在介绍Spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基本概念。目标是使读者能够对JdbcTemplate快速地掌握和使用。
原创不易,转载请注明出处:Spring JdbcTemplate框架搭建及其增删改查使用指南
代码下载地址:http://www.zuidaima.com/share/1724429678644224.htm
准备:
1. Spring的基本概念
Spring框架核心的思想就是建立一个Java对象的大工厂,用户只要给工厂一个指令,工厂就能将用户需要的对象根据配置文件组装好返还给用户。用户需要做的许多工作则可以写成简单的配置文件。
2. 丑陋的JDBC代码
01 |
Connection
con = null; |
02 |
PreparedStatement
pStmt = null; |
03 |
ResultSet
rs = null; |
04 |
try { |
05 |
con
= ods.getConnection(); |
06 |
String
sql = "select
* from admin"; |
07 |
pStmt
= con.prepareStatement(sql); |
08 |
rs
= pStmt.executeQuery(); |
09 |
while (rs.next())
{ |
10 |
} |
11 |
} catch (Exception
ex) { |
12 |
try { |
13 |
con.rollback(); |
14 |
} catch (SQLException
sqlex) { |
15 |
sqlex.printStackTrace(System.out); |
16 |
} |
17 |
ex.printStackTrace(); |
18 |
19 |
} finally { |
20 |
try { |
21 |
rs.close(); |
22 |
pStmt.close(); |
23 |
con.close(); |
24 |
} catch (Exception
e) { |
25 |
e.printStackTrace(); |
26 |
} |
27 |
} |
以上是常见的JDBC代码,简单的select语句也需要冗长的出错处理,并且每个函数都不断地重复同样的代码。
3. JdbcTemplate的作用
JdbcTemplate正是为了减少上述繁琐的代码而设计出来的。它是对JDBC的一种封装,抽象我们常用的一些方法。Simple and Stupid就是它的目标。下面是完成了刚才JDBC代码同样功能的JdbcTemplate的代码:
1 |
String
sql = "select
* from admin"; |
2 |
3 |
jdbcTemplate.query(sql,new RowCallbackHandler()
{ |
4 |
5 |
public void processRow(ResultSet
rs) throws SQLException
{ |
6 |
7 |
} |
8 |
9 |
}
); |
环境搭建:
1. 数据库的配置
本文使用Mysql数据库,新建表admin:
1 |
CREATE TABLE `admin`
( |
2 |
`ID` bigint(20)
unsigned NOT NULL auto_increment, |
3 |
`NAME` varchar(100) NOT NULL, |
4 |
`PASSWORD` varchar(200) NOT NULL, |
5 |
PRIMARY KEY (`ID`) |
6 |
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 |
2. Spring配置
JdbcTemplate的使用需要有DataSource的支持,所以在配置文件中,我们首先要配置一个OracleDataSource,然后在将这个DataSource配置到JdbcTemplate里。接着将JdbcTemplate配置进DAO层,最后将DAO配置进Model层。简要的关系如下:

01 |
<?xml version="1.0" encoding="UTF-8"?> |
02 |
<!DOCTYPE
beans PUBLIC "-//SPRING//DTD BEAN//EN" |
04 |
<beans> |
05 |
<bean id="dataSource" |
06 |
class="org.springframework.jdbc.datasource.DriverManagerDataSource"> |
07 |
<property name="driverClassName" value="com.mysql.jdbc.Driver" /> |
08 |
<property name="url" value="jdbc:mysql://localhost:3306/zuidaima_admin?useUnicode=true&characterEncoding=utf-8" /> |
09 |
<property name="username" value="root" /> |
10 |
<property name="password" value="111111" /> |
11 |
</bean> |
12 |
13 |
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> |
14 |
<property name="dataSource"> |
15 |
<ref bean="dataSource" /> |
16 |
</property> |
17 |
</bean> |
18 |
19 |
<bean id="userDao" class="com.zuidaima.dao.impl.UserDaoImpl"> |
20 |
<property name="jdbcTemplate"> |
21 |
<ref bean="jdbcTemplate" /> |
22 |
</property> |
23 |
</bean> |
24 |
25 |
<bean id="user" class="com.zuidaima.model.User"> |
26 |
<property name="dao"> |
27 |
<ref bean="userDao" /> |
28 |
</property> |
29 |
</bean> |
30 |
31 |
</beans> |
3. 项目截图:

使用方法:
1.查找
多行查询:
01 |
class UserRowMapper implements RowMapper
{ |
02 |
03 |
public Object
mapRow(ResultSet rs,int index) throws SQLException |
04 |
05 |
{ |
06 |
07 |
User
u = new User(); |
08 |
09 |
u.setId(rs.getString("ID")); |
10 |
11 |
u.setName(rs.getString("Name")); |
12 |
13 |
u.setPassword(rs.getString("Password")); |
14 |
15 |
return u; |
16 |
17 |
} |
18 |
19 |
} |
20 |
21 |
public List
select(String where) |
22 |
23 |
{ |
24 |
25 |
List
list; |
26 |
27 |
String
sql = "select
* from admin "+where; |
28 |
29 |
list
= jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper())); |
30 |
31 |
return list; |
32 |
33 |
} |
List最终返回的是满足条件的User队列。
单行查询:
01 |
public User
selectById(String id){ |
02 |
03 |
String
sql = "select
* from admin where id=?"; |
04 |
05 |
final User
u = new User(); |
06 |
07 |
final Object[]
params = new Object[]
{id}; |
08 |
09 |
jdbcTemplate.query(sql,
params, new RowCallbackHandler(){ |
10 |
11 |
public void processRow(ResultSet
rs) throws SQLException
{ |
12 |
13 |
u.setId(rs.getString("ID")); |
14 |
15 |
u.setName(rs.getString("NAME")); |
16 |
17 |
u.setPassword(rs.getString("PASSWORD")); |
18 |
19 |
} |
20 |
21 |
}); |
22 |
23 |
return u; |
24 |
25 |
} |
2. 插入
01 |
public void insert(User
u) |
02 |
03 |
{ |
04 |
05 |
String
sql = "insert
into admin (ID,NAME,PASSWORD) values (admin_id_seq.nextval,?,?)"; |
06 |
07 |
Object[]
params = new Object[]
{ |
08 |
09 |
u.getName(), |
10 |
11 |
u.getPassword()
}; |
12 |
13 |
jdbcTemplate.update(sql,params); |
14 |
15 |
} |
admin_id_seq.nextval为Oracle设置好的序列,问号“?”被params里的数据依次替代,最终执行sql。
3. 修改
非常简单:
1 |
public void update(String
how) |
2 |
3 |
{ |
4 |
5 |
jdbcTemplate.update(how); |
6 |
7 |
} |
运行截图

数据库截图

Spring JdbcTemplate框架搭建及其增删改查使用指南,布布扣,bubuko.com
Spring JdbcTemplate框架搭建及其增删改查使用指南
原文:http://blog.csdn.net/yaerfeng/article/details/22650373