Spring JdbcTemplate API
1.queryForObject() 方法
- 查询方法,返回唯一结果方法
- 两个参数:sql 和 返回值类型
- 用于查询返回唯一结果的情况。
String sql =
"select 'Hello World!'" +
" as s from dual";
String str=jdbcTemplate.queryForObject(
sql, String.class);
System.out.println(str);
2.update 方法
- 用于执行DML 语句:insert delete update
- 可变参数:第一个参数是SQL语句,第二个开始是SQL语句中替换的参数。
jdbcTemplate.update(sql, 100, 2012,
"123","Jerry", "110",
"jerry@tom.cn", new Date());
3.查询多个结果
1)返回一行数据,封装为一个对象
- Admin findById(int adminId)
2) 返回多行数据,封装为一个List
- List 中每个元素是一个对象。
- List<Admin> findAll()
> 注意:需要将一行数据映射到一个对象
4.使用 queryForObject() 方法查询对象
1) 写一个RowMapper 对象,用于将一行数据封装为一个对象。
2) 调用queryForObject方法:需要3个参数
- sql 语句
- sql 语句参数
- 结果映射对象 rowmapper
RowMapper 代码实例:
/**
* 将当前结果行映射到一个对象
*/
RowMapper<Admin> rowmapper =
new RowMapper<Admin>() {
public Admin mapRow(
ResultSet rs,
int index)
throws SQLException {
int id=rs.getInt("admin_id");
String code=
rs.getString("admin_code");
String name=
rs.getString("name");
String pwd =
rs.getString("password");
String tel=
rs.getString("telephone");
String email =
rs.getString("email");
Timestamp date =
rs.getTimestamp("enrolldate");
return new Admin(id, code, pwd,
name, email, tel, date);
}
};
执行 queryForObject方法实例:
String sql = "select * from " +
" admin_info_lhh " +
" where admin_id = ?";
JdbcTemplate jdbcTemplate =
getCtx().getBean(
"jdbcTemplate",
JdbcTemplate.class);
Admin admin = jdbcTemplate
.queryForObject(sql,//SQL
new Object[]{100}, //SQL参数
rowmapper);//rs 的映射规则
System.out.println(admin);
RowMapper 执行原理:
5.使用 query方法查询多个对象
> 用于:findAll() findByName()
1) 写一个RowMapper 对象,用于将一行数据封装为一个对象。
2) 调用query 方法:需要3个参数
- sql 语句
- 结果映射对象 rowmapper
- sql 语句参数
query方法实例:
String sql = "select * from " +
" admin_info_lhh " +
" where admin_id > ?";
JdbcTemplate jdbcTemplate =
getCtx().getBean(
"jdbcTemplate",
JdbcTemplate.class);
List<Admin> list = jdbcTemplate
.query(sql,//SQL
rowmapper, //rs 的映射规则
new Object[]{0} //SQL参数
);
System.out.println(list);
6.使用 queryForList查询部分结果
- Spring JDBC 支持查询有限列作为结果
- 此时将 查询结果中的每个行封装为一个Map对象,在map中key是列明,value是列值。
- queryForList方法就是用于查询有限列作为结果,其结果为一个list,每个元素是一个map,每个map是一行。
原理:
使用方式:
String sql = "select admin_id, name" +
" from admin_info_lhh ";
JdbcTemplate jdbcTemplate =
getCtx().getBean("jdbcTemplate",
JdbcTemplate.class);
List<Map<String, Object>> list=
jdbcTemplate.queryForList(sql);
for (Map<String, Object> row : list){
System.out.println(row);
}