什么是 RowMapper、ResultSetExtractor、绑定变量和查询类型?

Posted

技术标签:

【中文标题】什么是 RowMapper、ResultSetExtractor、绑定变量和查询类型?【英文标题】:What are RowMapper, ResultSetExtractor, bind variables and query types? 【发布时间】:2012-01-14 15:55:09 【问题描述】:

我知道如何使用 JDBC 模板和 DAO,但我仍然对此有疑问:

    RowMapperResultSetExtractor有什么用? 什么是绑定变量? 查询是列表类型吗?

【问题讨论】:

【参考方案1】:

Q1:这些接口与RowCallbackHandler 一起被JdbcTemplate 在查询数据库时经常使用。您实现哪个接口、如何实现以及在JdbcTemplate 中使用哪种方法取决于您的数据库以及您想要执行的查询类型。来自Spring API doc 和一些额外的 cmets:

RowMapper:

JdbcTemplate 用于逐行映射 ResultSet 行的接口。此接口的实现执行将每一行映射到结果对象的实际工作

RowMapper 通常用于在数据库中的行与结果对象之间存在一对一关系时映射对象。

ResultSetExtractor:

ResultSetExtractor 对象通常是无状态的,因此可重用

ResultSetExtractor 的实现通常从几行中创建一个对象,然后返回该对象。它是无状态的,因为实现类不保留方法调用之间的任何状态。

RowCallbackHandler:

此接口的实现执行处理每一行的实际工作 [...] 与 ResultSetExtractor 相比,RowCallbackHandler 对象通常是有状态的:它将结果状态保持在对象内,以供以后检查。

RowCallbackHandler 用于查询,例如更新或删除行。此外,当您需要跨 ResultSet 跟踪状态时使用它,例如 RowCountCallbackHandler 中的行数。

【讨论】:

以上是关于什么是 RowMapper、ResultSetExtractor、绑定变量和查询类型?的主要内容,如果未能解决你的问题,请参考以下文章

JdbcTemplate RowMapper接口

一个加速产生 Spring JDBC RowMapper 的工具类

spring 中的 RowMapper

Spring JDBC RowMapper 用于急切获取

1Java Web出现RowMapper错误

如何在 jdbc 模板中实现 RowMapper