在 CrudRepository(Spring data jdbc) 上使用 @query 和 table join
Using @query on CrudRepository(Spring data jdbc) with table join
我正在使用@query 尝试 spring 数据 jdbc 我遇到了一个问题:如果我有一个连接 2 的查询
像这样的表格:
@Query("select a.*, b.* from master a, detail b where b.master_id=a.id and a.id=:id")
如何获得回复?
官方Spring Data JDBC, References, and Aggregates没有给出任何提示。
有什么建议吗?
您有多种选择:
使用默认值RowMapper
用作 return 类型 class(或 class 的集合),它具有您选择的所有字段的属性。
这将 return 每行一个元素。
由于您将这两个表称为 master
和 detail
,在这种情况下您可能不希望这样。
使用自定义 RowMapper
@Query
annotation allows you to specify your own rowMapperClass
将与您的查询一起实例化并传递给 NamedParameterJdbcTemplate
。
同样,这将导致每行选择一个结果元素,因此可能不是您想要的。
使用自定义 ResultSetExtractor
This can be again specified in the @Query
annotation。
并允许您以任意方式构建结果。
有关详细信息,请参阅 ResultSetExtractor
的文档。
备注:如果您使用 ResultSetExtractor
从查询结果的多行中创建一个具有多个 Detail
实例的单个 Master
,请务必添加 ORDER BY master.id
.否则行的顺序可能符合要求但实际上不能保证。
我正在使用@query 尝试 spring 数据 jdbc 我遇到了一个问题:如果我有一个连接 2 的查询 像这样的表格:
@Query("select a.*, b.* from master a, detail b where b.master_id=a.id and a.id=:id")
如何获得回复? 官方Spring Data JDBC, References, and Aggregates没有给出任何提示。 有什么建议吗?
您有多种选择:
使用默认值RowMapper
用作 return 类型 class(或 class 的集合),它具有您选择的所有字段的属性。 这将 return 每行一个元素。
由于您将这两个表称为 master
和 detail
,在这种情况下您可能不希望这样。
使用自定义 RowMapper
@Query
annotation allows you to specify your own rowMapperClass
将与您的查询一起实例化并传递给 NamedParameterJdbcTemplate
。
同样,这将导致每行选择一个结果元素,因此可能不是您想要的。
使用自定义 ResultSetExtractor
This can be again specified in the @Query
annotation。
并允许您以任意方式构建结果。
有关详细信息,请参阅 ResultSetExtractor
的文档。
备注:如果您使用 ResultSetExtractor
从查询结果的多行中创建一个具有多个 Detail
实例的单个 Master
,请务必添加 ORDER BY master.id
.否则行的顺序可能符合要求但实际上不能保证。