У меня есть класс Java
class Node {
String id;
String name;
List<Node> children;
}
И таблицы в MySQL:
NODES:
| ID | NAME |
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
| 4 | name4 |
и еще одна таблица для отношений
RELATIONS:
| PARENT_ID | CHILD_ID |
| 1 | 2 |
| 2 | 3 |
| 2 | 4 |
Обычно мы можем использовать левое соединение и сборку, чтобы соединить их вместе, как показано ниже
<resultMap id="node" type="org.hello.Node>
<id property="id" column="ID"/>
<result property="name" column="NAME"/>
<collection property="children" ofType="org.hello.Node" resultMap="node"/>
</resultMap>
<select id="select" resultMap="node">
SELECT ID, NAME FROM NODES N
LEFT JOIN RELATIONS R ON N.ID = R.PARENT_ID
LEFT JOIN NODES N1 ON R.CHILD_ID = N1.ID
</select>
Если N1
- это просто еще одна таблица с другой моделью, она должна работать. Вопрос в том, как мы можем написать конфигурацию mybatis xml для рекурсивного отображения над структурой, которая ссылается на себя?