1、 spring框架中org.springframework.jdbc.core包提供了JDBC模板类,其中JdbcTemplate是core这个包的核心类,其他模板都是基于它封装完成的。
JdbcTemplate主要提供以下四类方法:
execute方法,用于执行任何sql语句,一般用于执行ddl(Data Definition Language),数据定义语句,用于创建表结构
update方法及batchUpdate方法,执行新增、修改、删除
query方法及queryForXXX方法,执行查询
call方法,执行存储过程,函数。
2、JdbcTemplate 针对数据查询提供了多个重载的模板方法,你可以根据需要选用不同的模板方法
1)以下方法取得一个单一的结果:
2)JdbcTemplate 也定义了返回多行数据的方法:
queryForList 方法根据传入的 SQL 以及相应的参数执行查询,将查询的结果以 java.util.List 的形式返回,返回的 java.util.List 中的每一个元素都是 java.util.Map 类型,分别对应结果集中的一行,Map 的 Key 为每一列的列名,而Map 的值就是当前行列名对应的值。
2、 JdbcTemplate 的 query 方法,支持传入一个 Callback 接口
1)ResultSetExtractor:用于结果集数据提取,用户需实现方法 extractData 方法来处理结果集
2)RowMapper(常用):用于将结果集每行数据转换为需要的类型,用户需实现方法 mapRow 方法来完成将每行数据转换为相应的类型
3)RowCallbackHandler:用于处理 ResultSet 的每一行结果,用户需实现方法processRow 方法来完成处理,在该回调方法中无需执行 rs.next()
RowMapper 接口,这个接口的实现类的功能是将结果集中的每一行数据封装成用户定义的结构,所以在查询方法中经常会被用到,spring提供了以下三个常用的该接口的实现类:
1)ColumnMapRowMapper:返回一个 List 对象,对象中的每一个元素都是一个以列名为 key 的 Map 对象
2)BeanPropertyRowMapper:当 POJO 对象和数据库表字段完全对应或者驼峰式与下划线式对应时,该类会根据构造函数中传递的 class 来自动填充数据
3)SingleColumnRowMapper:也返回一个 List 对象,对象中的每个元素是数据库中的某列的值
ColumnMapRowMapper 实例:
BeanPropertyRowMapper实例:
SingleColumnRowMapper实例: