Mybatis实现递归查询查找子查询

Mybatis实现递归查询查找子查询

1.简单的数据结构

简单数据结构

2.实体类

import java.util.List;

/**
 * @ClassName AuditTabRele
 * @Description tab 关系表
 * @Author wangyj
 * @Date 19/11/7 18:38
 */

public class AuditTabRele {

    private String tabCode;
    private String tabName;
    private String pTabCode;
    private String tabSort;
    private List<AuditTabRele> subTabs;

    public String getTabCode() {
        return tabCode;
    }

    public void setTabCode(String tabCode) {
        this.tabCode = tabCode;
    }

    public String getTabName() {
        return tabName;
    }

    public void setTabName(String tabName) {
        this.tabName = tabName;
    }

    public String getpTabCode() {
        return pTabCode;
    }

    public void setpTabCode(String pTabCode) {
        this.pTabCode = pTabCode;
    }

    public String getTabSort() {
        return tabSort;
    }

    public void setTabSort(String tabSort) {
        this.tabSort = tabSort;
    }

    public List<AuditTabRele> getSubTabs() {
        return subTabs;
    }

    public void setSubTabs(List<AuditTabRele> subTabs) {
        this.subTabs = subTabs;
    }

    @Override
    public String toString() {
        return "AuditTabRele{" +
                "tabCode='" + tabCode + '\'' +
                ", tabName='" + tabName + '\'' +
                ", pTabCode='" + pTabCode + '\'' +
                ", tabSort='" + tabSort + '\'' +
                ", subTabs=" + subTabs +
                '}';
    }
}

3.Mapper文件

mybatis的javaType和ofType
都是指定对象的类型 不同的是当使用反向查询select从另一个maper文件中取出数据时必须用ofType
都可以为collection和association是指定对象的类型,
都不是必须写的, 只有反向select时需要ofType;

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.jeeplus.modules.china.mapper.SysNewIndexMapper" >

    <resultMap type="AuditTabRele" id="AuditTabReleResult">
        <result property="tabCode" column="TAB_CODE"/>
        <result property="tabName" column="TAB_NAME"/>
        <result property="pTabCode" column="P_TAB_CODE"/>
        <result property="tabSort" column="TAB_SORT"/>

        <!-- 一对多的关系 -->
        <!-- 查到的TAB_CODE作为下次查询的p_tab_code -->
        <collection property="subTabs" javaType="ArrayList" column="TAB_CODE" select="selectTabs" />
    </resultMap>
	
    <select id="selectTabs" resultMap="AuditTabReleResult">
        SELECT * FROM AUDIT_TAB_RELE  WHERE P_TAB_CODE = #{pTabCode}
    </select>


</mapper>

4.查询结果

{
	"tabs": [
		{
			"tabCode": "1",
			"tabName": "酬金",
			"pTabCode": "0",
			"tabSort": "1",
			"subTabs": [
				{
					"tabCode": "4",
					"tabName": "升档/平移类酬金",
					"pTabCode": "1",
					"tabSort": "1",
					"subTabs": [
						{
							"tabCode": "9",
							"tabName": "测试",
							"pTabCode": "4",
							"tabSort": "1"
						}
					]
				},
				{
					"tabCode": "5",
					"tabName": "宽带类酬金",
					"pTabCode": "1",
					"tabSort": "2"
				},
				{
					"tabCode": "6",
					"tabName": "数据类酬金",
					"pTabCode": "1",
					"tabSort": "3"
				},
				{
					"tabCode": "7",
					"tabName": "终端酬金",
					"pTabCode": "1",
					"tabSort": "4"
				},
				{
					"tabCode": "8",
					"tabName": "入网类酬金",
					"pTabCode": "1",
					"tabSort": "5"
				}
			]
		},
		{
			"tabCode": "2",
			"tabName": "新增用户异常",
			"pTabCode": "0",
			"tabSort": "2"
		},
		{
			"tabCode": "3",
			"tabName": "超合同",
			"pTabCode": "0",
			"tabSort": "3"
		}
	]
}

参考
MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值