栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一次成功的mybatis-plus级联查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一次成功的mybatis-plus级联查询

有一个需求,需要级联查询出树形菜单列表:
mapper:

public interface LawTypeInfoMapper extends baseMapper {

    LawTypeInfoVO selectTypeTree(@Param("id")Integer id);

}

bean:

@Data
@EqualsAndHashCode(callSuper = false)
public class LawTypeInfoVO implements Serializable {

    @ApiModelProperty(value = "主键id")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "类型名称")
    private String name;

    @ApiModelProperty(value = "父级id")
    private Long pid;

    @ApiModelProperty(value = "树节点")
    private Integer degree;

    @ApiModelProperty(value = "创建者")
    private String createBy;

    @ApiModelProperty(value = "更新者")
    private String updateBy;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    private List lawTypeInfoVOS;
}

xml




    
        id,`name`,pid,degree,create_by,update_by,create_time,update_time,flag
    
    
        law_type_info
    
    
        
        
        
        
        
        
        
        
        
    
    
        SELECT
        id,
        `name`,
        pid,
        degree,
        create_by,
        update_by,
        create_time,
        update_time,
        flag
        FROM law_type_info

        
            
                and id=#{id}
            
            
                and degree=0
            
                and flag=1
        
    


查询出结果后,需要查出某一个菜单下的内容,包括所有子菜单下的内容,我们的思路是查出所有菜单及子菜单id,然后用in去检索。
查询目录:

List longs = null;
        if (dto.getLawTypeId() != null) {
            LawTypeInfoVO lawTypeInfoVO = lawTypeInfoMapper.selectTypeTree(dto.getLawTypeId());
            if (lawTypeInfoVO == null) {
                throw new BusinessException("目录结构不存在!");
            }
            longs = new ArrayList<>();
            longs.add(lawTypeInfoVO.getId());
            getTypeIds(longs, lawTypeInfoVO.getLawTypeInfoVOS());
        }

利用递归回调遍历树

private void getTypeIds(List longs, List vo) {
        for (LawTypeInfoVO v : vo
        ) {
            longs.add(v.getId());
            if (v.getLawTypeInfoVOS() != null && v.getLawTypeInfoVOS().size() > 0) {
                getTypeIds(longs, v.getLawTypeInfoVOS());
            }
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/592419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号