jdbcTemplate.query(????)<o:p></o:p>
<o:p></o:p>
主要是一些callback interface 的用法<o:p></o:p>
<o:p></o:p>
PreparedStatement处理<o:p></o:p>
1. PreparedStatementCreator<o:p></o:p>
PreparedStatement createPreparedStatement(Connection con) <o:p></o:p>
用途: 准备好PreparedStatement<o:p></o:p>
ps=con.preparedStatement(sql);<o:p></o:p>
ps.setXXX();<o:p></o:p>
return ps;<o:p></o:p>
<o:p></o:p>
2. PreparedStatementSetter<o:p></o:p>
void setValues(PreparedStatement ps)<o:p></o:p>
用途: 设置ps参数.<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
ResultSet 处理<o:p></o:p>
1. ResultSetExtractor<o:p></o:p>
Object extractData(ResultSet rs) <o:p></o:p>
处理整个结果集, 返回任意Object<o:p></o:p>
<o:p></o:p>
rs.absolute(x);<o:p></o:p>
while(rs.next())..
注意,需要手工移动ResultSet
<o:p></o:p>
<o:p></o:p>
2. RowCallbackHandler<o:p></o:p>
void processRow(ResultSet rs) <o:p></o:p>
用途: 处理一行数据. 不能rs.next().<o:p></o:p>
<o:p></o:p>
3. RowMapper<o:p></o:p>
Object mapRow(ResultSet rs, int rowNum) <o:p></o:p>
只处理当前行数据, 将当前条数据map到某entity, rowNum为当前行号, 0开始.<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
jdbcTemplate.queryForInt(???) 和 jdbcTemplate.queryForLong(???)<o:p></o:p>
<o:p></o:p>
一般是用来count(),返回单行单列int , long。
<o:p></o:p>
<o:p></o:p>
jdbcTemplate.queryForList(???)<o:p></o:p>
返回 a List of Maps, using column name as key.<o:p></o:p>
[{id=1, name=aaa.com}, {id=2, name=bbb.com,}]<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
jdbcTemplate.queryForMap(???)<o:p></o:p>
和 queryForList(), 差不多,只是预期查询一行数据。返回 a Map, using column name as key.<o:p></o:p>
The query is expected to be a single row query
<o:p></o:p>
<o:p></o:p>
jdbcTemplate.queryForObject(???)
本质上和queryForInt(),相同。返回都是单行单列一个数据。
The query is expected to be a single row/single column query; the returned result will be directly mapped to the corresponding object type.
<o:p></o:p>
<o:p></o:p>
jdbcTemplate.queryForRowSet(???)<o:p></o:p>
返回RowSet, representing disconnected java.sql.ResultSet<o:p></o:p>
<o:p></o:p>