Mybatis 递归查询

1,475 阅读1分钟

实体类

@Data
@TableName("area")
public class Area extends BaseEntity {

    private static final long serialVersionUID=1L;

    @TableId(value = "code", type = IdType.ID_WORKER)
    private String code;

    private String name;

    private Integer showorder;

    private String parentcode;

    private Integer level;

    @TableField(exist = false)
    private List<Area> children;

}

xml

 <resultMap id="BaseResultMap" type="com.xp.project.demo.entity.Area">
        <id column="code" property="code" />
        <result column="name" property="name" />
        <result column="showorder" property="showorder" />
        <result column="parentcode" property="parentcode" />
        <result column="level" property="level" />
        <collection property="children" column="code" ofType="com.xp.project.demo.entity.Area"
                select="getChildrenArea">
        </collection>
    </resultMap>

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        code, name, showorder, parentcode, level
    </sql>
    <select id="getChildrenArea" resultMap="BaseResultMap">
        select  <include refid="Base_Column_List"/> from area where parentcode = #{code}
    </select>
    <select id="getAreaList" resultMap="BaseResultMap">
        select  <include refid="Base_Column_List"/> from
        area where parentcode = 0
    </select>

Dao 接口

public interface AreaMapper extends IBaseMapper<Area> {
    
    List<Area> getAreaList();
    
}

效果可实现无线递归