使用 Spring JDBC Rowmapper 映射分层数据

Posted

技术标签:

【中文标题】使用 Spring JDBC Rowmapper 映射分层数据【英文标题】:Mapping Hierarchical Data using Spring JDBC Rowmapper 【发布时间】:2013-12-20 07:27:03 【问题描述】:

我有一个父子层次结构,我通过维护自身外键将其存储在单个表中。我的表格列是ID, Name, ParentID。这里,ParentID 引用了同一张表的ID 列。

我的模型类是这样的,

Class Model

    private int id;
    private String name;
    private Model parent;
    private List<Model> children;

如何使用RowMapper 映射此模型中的数据?或者,实现这一目标的最佳方法是什么?

我正在单个查询中检索整个层次结构。

【问题讨论】:

【参考方案1】:

在您的 RowMapper - Map 中创建一个字段。当您解析结果时,将每个模型项目也放在地图中,其中键是项目的 id。

要将子元素添加到适当的父元素,请通过当前项目的父 ID 从地图中读取父模型元素。

需要提及的两件事

根元素没有父元素。 您的查询应提供正确的顺序(必须先处理父级)

【讨论】:

以上是关于使用 Spring JDBC Rowmapper 映射分层数据的主要内容,如果未能解决你的问题,请参考以下文章

Spring JDBC RowMapper 用于急切获取

使用 Spring JDBC Rowmapper 映射分层数据

用于 RowMapper 的 Spring jdbc 模板的单元测试用例

基于spring-boot-data-jdbc的RowMapper实例的初始化配置,配置内容和实体类的代码由测试类生成

spring对JDBC整合的时候,要注意自己写一个映射,继承RowMapper,查询的时候会用到,将返回的ResultSet一条对应一个Employee对象。

Spring RowMapper 接口究竟是如何工作的?