我知道如何使用JDBC模板和DAO,但我仍然有疑问:
RowMapper
和ResultSetExtractor
有什么用?答案 0 :(得分:14)
Q1:在对数据库进行排队时,这些接口与RowCallbackHandler
经常使用的JdbcTemplate
一起使用。您实现哪个接口,如何实现它以及在JdbcTemplate
中使用哪种方法取决于您的数据库以及您希望执行哪种查询。来自Spring API doc和一些其他评论:
JdbcTemplate用于基于每行映射ResultSet的行的接口。此接口的实现执行将每行映射到结果对象的实际工作
即。 RowMapper
通常用于在数据库中的行与结果对象之间存在一对一关系时映射对象。
ResultSetExtractor对象通常是无状态的,因此可以重复使用
ResultSetExtractor
的实现通常会从多行中创建一个对象,随后会返回该对象。它是无状态的,因为实现类不保留方法调用之间的任何状态。
此接口的实现执行处理每一行的实际工作[...]与ResultSetExtractor相比,RowCallbackHandler对象通常是有状态的:它将结果状态保持在对象中,以供稍后检查。< / p>
RowCallbackHandler
用于更新或删除行等查询。此外,当您需要跟踪ResultSet
中的状态时,例如RowCountCallbackHandler中的行数,就会使用它。