java - 将递归连接转换为java对象

标签 java sql mybatis spring-mybatis

假设我有以下模型

public class ExampleComment {
    private int id;
    private Integer commentOf;
    private List<ExampleComment> comments;
    ...
    getters, setters
    ...
}

和数据库:

id | commentOf 
1  | null 
2  | 1  
3  | 1  
4  | 2  

如果我使用一些讨厌的sql过程(这可能不是正确的解决方案?),我仍然不知道如何将它传输到mybatis中的java对象。

我知道当我在.net中做同样的事情时,它是由 Entity Framework 制作的,所以可能应该可以在mybatis中制作,但我在google上找不到任何解决方案。

最佳答案

假设 comments 属性将包含当前评论位于 COMMENTOF 列中的所有评论,则以下内容应该有效。

主要评论结果图:

<resultMap id="commentMap" type="ExampleComment">
    <id property="id" column="id" />
    <result property="commentOf" column="commentOf" />
    <collection property="comments" javaType="ArrayList" column="COMMENTOF" ofType="ExampleComment" select="selectChildComments"
</resultMap>

选择selectChildComments:

<select id="selectChildComments" resultMap="commentMap">
  SELECT ID, COMMENTOF FROM COMMENT_TABLE WHERE COMMENTOF=#{id}
</select>

关于java - 将递归连接转换为java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763472/

相关文章:

java - 列索引无效错误 - 无法解决问题

java - 从 HashMap 中检索位置

java - Java 的 instanceof 和 isInstance() 在 VB 中的等价物是什么?

java - 使用 jSTL 显示数据表

python - SQL - 使用临时表更新主表

Java:访问相同的ArrayList,同时使用该ArrayList中的其余元素

java - 关于Java中初始化新创建的空字符串的问题

java hibernate在插入时跳过插入 'id'

获取每个组的第一条记录的 MySQL 语法

caching - 外部刷新 MyBatis 缓存(映射器之外)