java操作数据库的基本步骤如下:
- 建立数据库连接
- 创建Statement或者PreparedStatement
- 执行sql,返回ResultSet
- 关闭ResultSet
- 关闭Statement
- 关闭Connection
Spring JDBC
在Spring JDBC中,JdbcTemplate是一个主要的模板类,继承关系如图
- JdbcAccessor对DataSource数据源进行管理和配置
- JdbcOperations接口定义了通过JDBC操作数据库的基本操作方法
- JdbcTemplate实现了的数据库的操作方法
JdbcAccessor的源码:
|
|
下面是数据源的配置内容
|
|
JdbcTemplate
JdbcTemplate的execute实现
数据源配置好之后,我们开始对据库进行操作,下面以JdbcTemplate中execute()方法为例:
|
|
JdbcTemplate的query实现
query方法依赖上面的execute方法,通过QueryStatementCallback的回调doInStatement来实现,回调中是Statement的执行以及查询结果的返回等处理.
|
|
JdbcTemplate的update实现
update方法依赖上面的execute方法,通过UpdateStatementCallback的回调doInStatement来实现,回调中是Statement的执行.
|
|
数据库的Connection
我们在以上的操作中使用DataSourceUtils对数据库的Connection进行管理.
|
|
结果集处理回调
- RowMapper 结果集转换接口,用户需实现方法mapRow(ResultSet rs, int rowNum)来完成将每行数据转换为相应的类型。
- ColumnMapRowMapper 结果集转换成Map,每一行数据转换成一个Map
- BeanPropertyRowMapper 结果集转换成指定的实例对象(一行数据一个对象)
- ResultSetExtractor 用于结果集数据提取,用户需实现方法extractData(ResultSet rs)来处理结果集,用户必须处理整个结果集;
下面看一下ColumnMapRowMapper的源码,结果返回Map对象
BeanPropertyRowMapper中mapRow的实现
|
|
结果集的转换时通过ResultSetExtractor来完成的,ResultSetExtractor在这里是于适配器的作用