首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【SpringBoot+Vue】006-创建导航对象、菜单的持久层、编写菜单控制器

【SpringBoot+Vue】006-创建导航对象、菜单的持久层、编写菜单控制器

作者头像
訾博ZiBo
发布2025-01-06 16:10:54
发布2025-01-06 16:10:54
2510
举报

一、创建导航对象

1、SQL

mainmenu.sql:
代码语言:javascript
复制
/*
Navicat MySQL Data Transfer

Source Server         : Testblog
Source Server Version : 50556
Source Host           : localhost:3306
Source Database       : easyproject

Target Server Type    : MYSQL
Target Server Version : 50556
File Encoding         : 65001

Date: 2020-05-27 14:48:51
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for mainmenu
-- ----------------------------
DROP TABLE IF EXISTS `mainmenu`;
CREATE TABLE `mainmenu` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `path` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of mainmenu
-- ----------------------------
INSERT INTO `mainmenu` VALUES ('100', '权限管理', '/admin');
INSERT INTO `mainmenu` VALUES ('200', '运动平台', '/use');
submenu.sql:
代码语言:javascript
复制
/*
Navicat MySQL Data Transfer

Source Server         : Testblog
Source Server Version : 50556
Source Host           : localhost:3306
Source Database       : easyproject

Target Server Type    : MYSQL
Target Server Version : 50556
File Encoding         : 65001

Date: 2020-05-27 14:48:58
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for submenu
-- ----------------------------
DROP TABLE IF EXISTS `submenu`;
CREATE TABLE `submenu` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `path` varchar(255) NOT NULL,
  `mid` int(50) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `mid` (`mid`),
  CONSTRAINT `submenu_ibfk_1` FOREIGN KEY (`mid`) REFERENCES `mainmenu` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=204 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of submenu
-- ----------------------------
INSERT INTO `submenu` VALUES ('101', '用户列表', '/user', '100');
INSERT INTO `submenu` VALUES ('102', '修改权限', '/rights', '100');
INSERT INTO `submenu` VALUES ('103', ' 运动模块', '/sport', '100');
INSERT INTO `submenu` VALUES ('104', '商品模块', '/goods', '100');
INSERT INTO `submenu` VALUES ('201', '运动科普', '/Introduction', '200');
INSERT INTO `submenu` VALUES ('202', '卡路里', '/calories', '200');
INSERT INTO `submenu` VALUES ('203', '营养配餐', '/food', '200');

2、菜单对象

一级菜单MainMenu:
代码语言:javascript
复制
package com.zibo.sport.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class MainMenu {
    private int id;
    private String title;
    private String path;
    List<SubMenu> subMenuList;
}
二级菜单SubMenu:
代码语言:javascript
复制
package com.zibo.sport.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SubMenu {
    private int id;
    private String title;
    private String path;
}

二、编写菜单的持久层

1、MenuDao接口

代码语言:javascript
复制
package com.zibo.sport.dao;

import com.zibo.sport.bean.MainMenu;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface MenuDao {

    List<MainMenu> getMainMenuList();

}

2、MenuDao映射文件

代码语言:javascript
复制
<?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.zibo.sport.dao.MenuDao">
    <!--映射实体-->
    <resultMap id="menuMap" type="mainMenu">
        <id column="id"  property="id"/>
        <result column="title"  property="title"/>
        <result column="path"  property="path"/>
        <collection  property="subMenuList" ofType="subMenu">
            <result column="sid"  property="id"/>
            <result column="stitle"  property="title"/>
            <result column="spath"  property="path"/>
        </collection>
    </resultMap>

    <select id="getMainMenuList" resultMap="menuMap">
        SELECT mm.*,sm.id as sid ,sm.title as stitle,sm.path as spath FROM mainmenu mm ,submenu sm WHERE mm.id = sm.mid;
    </select>
</mapper>

三、编写菜单控制器

1、MenuController

代码语言:javascript
复制
package com.zibo.sport.controller;

import com.alibaba.fastjson.JSON;
import com.zibo.sport.bean.MainMenu;
import com.zibo.sport.dao.MenuDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class MenuController {
    @Autowired
    MenuDao menuDao;

    @RequestMapping("/menus")
    public String getAllMenus(){
        Map<String, Object> data = new HashMap<>();
        List<MainMenu> mainMenus = menuDao.getMainMenuList();
        data.put("data",mainMenus);
        data.put("status",200);
        String data_json = JSON.toJSONString(data);
        System.out.println("成功访问!!!");
        return data_json;
    }
}

(接下来就是前端进行获取导航菜单数据,咱们到前端去写,下一篇笔记进行记录!)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建导航对象
    • 1、SQL
      • mainmenu.sql:
      • submenu.sql:
    • 2、菜单对象
      • 一级菜单MainMenu:
      • 二级菜单SubMenu:
  • 二、编写菜单的持久层
    • 1、MenuDao接口
    • 2、MenuDao映射文件
  • 三、编写菜单控制器
    • 1、MenuController
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档