我知道如何使用JDBC模板和DAO,但是我仍然对此有疑问:
RowMapper
和ResultSetExtractor
的用途是什么? 最佳答案
问题1:这些接口与查询数据库时RowCallbackHandler
经常使用的JdbcTemplate
一起。您实现哪种接口,如何实现它以及在JdbcTemplate
中使用哪种方法取决于您的数据库以及要执行哪种查询。从Spring API doc和一些其他注释:
RowMapper:
JdbcTemplate使用的接口,用于按行映射ResultSet的行。此接口的实现执行将每一行映射到结果对象的实际工作
即RowMapper
通常用于在数据库中的行与生成的对象之间存在一对一关系时映射对象。
ResultSetExtractor:
ResultSetExtractor对象通常是无状态的,因此可重用ResultSetExtractor
的实现通常在几行中创建一个对象,然后将其返回。它是无状态的,因为实现类不会在方法调用之间保留任何状态。
RowCallbackHandler:
此接口的实现执行处理每一行的实际工作,与ResultSetExtractor相比,RowCallbackHandler对象通常是有状态的:它将结果状态保留在该对象内,以供以后检查。RowCallbackHandler
用于查询,例如更新或删除行。此外,在需要跟踪ResultSet
中的状态(例如RowCountCallbackHandler中的行数)时使用它。