博为峰JavaEE技术文章 ——MyBatis 递归查询

做项目时,我们往往要用树形结构来表示某些数据之间的关联关系,如行政部门、菜单、行政区域等等。这些树状结构往往需要在数据库中持久化。在进行树形结构表设计时,一般会把父子关系的数据放在一张表中,并添加一个字段,指向父亲节点。如下所示的行政区域表:

博为峰JavaEE技术文章 ——MyBatis 递归查询_第1张图片

那么如何在Mybatis中对这种树形关系表进行查询呢?今天小博老师就给大家介绍下如何在Mybatis中实现对树形关系表的递归查询。

首先建立与属性表对应的Java Bean Area.java,源码如下:

博为峰JavaEE技术文章 ——MyBatis 递归查询_第2张图片

childList属性存放当前Area对象的所有子节点的集合。

根据JavaBean的关系设置,我们再来设计Mapper XML的映射:

博为峰JavaEE技术文章 ——MyBatis 递归查询_第3张图片

我们使用了collection元素的select属性,根据当前Area的Id查询Area的所辖区域列表。查询语句findAreaByparentId中,把传入的Areaid当做parent id,把所有下属区域全部查询出来。

Mapper接口文件定义就很简单了:

博为峰JavaEE技术文章 ——MyBatis 递归查询_第4张图片

测试核心代码:

博为峰JavaEE技术文章 ——MyBatis 递归查询_第5张图片

测试结果:

博为峰JavaEE技术文章 ——MyBatis 递归查询_第6张图片

你可能感兴趣的:(博为峰JavaEE技术文章 ——MyBatis 递归查询)