mysql中自连怎么运用_Mybatis用SQL做自连表查询

1 需求

现在有一个菜单表,菜单里同时保存有一级菜单和二级菜单,一级菜单的父菜单id字段是null,二级菜单的父菜单id字段保存了它的父菜单的id。在Java中,一个菜单对象里有一个List类型的属性保存它的子菜单。现在需要将数据库中的数据转为Java中菜单兑现的结构。

2 方法

本文采用Mybatis,编写SQL语句做自连表查询。

3 数据库表

类型

id

int

description

varchar

path

varchar

parent_menu_id

int

4 POJO

package com.lpc.labbackend.entity;

import java.util.List;

public class Menu {

private Integer id;

private String description;

private String path;

private List

//省略构造函数、getter、setter

}

5 Mybatis的mapper.xml

id, description, path

select

from menu

where parent_menu_id is null

select

from menu

where menu.parent_menu_id = #{id}

resultMap标签中用一个collection标签表示Java里的List,ofType属性表示这个集合的类型。这个List是通过select属性使用了一个查询语句获取数据,column属性是这个查询语句的查询条件。

6 前台接收到的数据

0: {id: 1, icon: "el-icon-user-solid", description: "账户设置", path: null,…}

id: 1

icon: "el-icon-user-solid"

description: "账户设置"

path: null

childMenus: [{id: 5, icon: null, description: "所有账户", path: "users", childMenus: null}]

0: {id: 5, icon: null, description: "所有账户", path: "users", childMenus: null}

id: 5

icon: null

description: "所有账户"

path: "users"

childMenus: null

1: {id: 2, icon: "el-icon-s-data", description: "信息统计", path: null,…}

2: {id: 3, icon: "el-icon-s-check", description: "申请批准", path: null,…}

7 参考资料

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值