Maison > base de données > tutoriel mysql > Comment utiliser SpringBoot+MyBatisPlus+MySQL8 pour implémenter une requête de structure arborescente

Comment utiliser SpringBoot+MyBatisPlus+MySQL8 pour implémenter une requête de structure arborescente

WBOY
Libérer: 2023-05-30 18:07:06
avant
1154 Les gens l'ont consulté

Scénario :

Lors de la mise en œuvre du module de fonction d'autorisation, les données d'autorisation demandées doivent être renvoyées au front-end dans une structure arborescente.

Implémentation de la fonction :

Étape 1 : Définition de la structure de la table d'autorisation et ses données de démonstration de fonction.

DROP TABLE IF EXISTS `baoan_privilege`;
CREATE TABLE `baoan_privilege`  (
  `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键',
  `privilege_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限名称',
  `privilege_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限编码',
  `pid` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父Id',
  `url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单路由',
  `order_rank` int(3) NULL DEFAULT NULL COMMENT '序号',
  `privilege_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限类型1:项目,2菜单,3按钮',
  `privilege_description` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限描述',
  `state` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '2' COMMENT '状态(1:禁用,2:启用)',
  `created_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
  `created_dt` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
  `version` int(9) NULL DEFAULT 1 COMMENT '版本号',
  `updated_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人',
  `updated_dt` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
  `icon_name` int(15) NULL DEFAULT NULL COMMENT '图标名称',
  `delete_flag` int(1) NULL DEFAULT 1 COMMENT '删除标识(1:未删除,2:已删除)',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '权限表' ROW_FORMAT = Dynamic;
 
-- ----------------------------
-- Records of baoan_privilege
-- ----------------------------
INSERT INTO `baoan_privilege` VALUES ('1', '首页', 'A', '0', NULL, NULL, '1', '首页', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('10', '通知管理', 'F_02', '6', NULL, NULL, '2', '通知管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('11', '操作日志', 'F_03', '6', NULL, NULL, '2', '操作日志', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('12', '角色管理', 'F_04', '6', NULL, NULL, '2', '角色管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('13', '存储管理', 'F_05', '6', NULL, NULL, '2', '存储管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('14', '权限管理', 'F_06', '6', NULL, NULL, '2', '权限管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('15', '新增', 'F_01_add', '9', NULL, NULL, '3', '管理员新增', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('16', '修改', 'F_01_update', '9', NULL, NULL, '3', '管理员修改', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('17', '查询', 'F_01_search', '9', NULL, NULL, '3', '管理员查询', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('18', '删除', 'F_01_delete', '9', NULL, NULL, '3', '管理员删除', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('19', '导出', 'F_01_export', '9', NULL, NULL, '3', '管理员导出', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('2', '用户管理', 'B', '0', NULL, NULL, '1', '用户管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('3', '商场管理', 'C', '0', NULL, NULL, '1', '商场管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('4', '商品管理', 'D', '0', NULL, NULL, '1', '商品管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('5', '推广管理', 'E', '0', NULL, NULL, '1', '推广管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('6', '系统管理', 'F', '0', NULL, NULL, '1', '系统管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('7', '配置管理', 'G', '0', NULL, NULL, '1', '配置管理', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('8', '统计报表', 'H', '0', NULL, NULL, '1', '统计报表', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
INSERT INTO `baoan_privilege` VALUES ('9', '管理员', 'F_01', '6', NULL, NULL, '2', '管理员', '2', NULL, NULL, 1, NULL, NULL, NULL, 1);
Copier après la connexion

second Étape: Permission Tableau Définition de l'entité et ses objets étendus

objets basiques

rreee

xtendtend objets

package com.zzg.entity;
 
import java.io.Serializable;
import java.util.Date;
 
import com.baomidou.mybatisplus.annotation.TableName;
 
import lombok.Data;
 
@SuppressWarnings("serial")
@TableName(value = "baoan_privilege")
@Data
public class BaoanPrivilege implements Serializable {
 private String id;
 
    private String privilegeName;
 
    private String privilegeCode;
 
    private String pid;
 
    private String url;
 
    private Integer orderRank;
 
    private String privilegeType;
 
    private String privilegeDescription;
 
    private String state;
 
    private String createdBy;
 
    private Date createdDt;
 
    private Integer version;
 
    private String updatedBy;
 
    private Date updatedDt;
 
    private Integer iconName;
 
    private Integer deleteFlag;
}
Copier après la connexion

step trois: Permission Table Table Mappel Définition

Mapper Interface Définition

package com.zzg.vo;
 
import java.util.List;
 
import com.zzg.entity.BaoanPrivilege;
 
import lombok.Data;
 
@SuppressWarnings("serial")
@Data
public class BaoanPrivilegeVo  extends BaoanPrivilege {
 
 private List<baoanprivilege> children;
}</baoanprivilege>
Copier après la connexion

mapper.xml Définition du fichier de fichier

package com.zzg.mapper;
 
import java.util.List;
import java.util.Map;
 
import org.apache.ibatis.annotations.Param;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zzg.entity.BaoanPrivilege;
import com.zzg.vo.BaoanPrivilegeVo;
 
public interface BaoanPrivilegeMapper extends BaseMapper<baoanprivilege> {
 List<baoanprivilegevo> selectList(Map<string> parameter);
 
 IPage<baoanprivilegevo> selectPage(Page page, @Param("vo")Map<string> parameter);
}</string></baoanprivilegevo></string></baoanprivilegevo></baoanprivilege>
Copier après la connexion

Étape 3 : Définition du service de table d'autorisation

<?xml  version="1.0" encoding="UTF-8"?>
nbsp;mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper>
  <resultmap>
    <id></id>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
    <result></result>
  </resultmap>
  
  <resultmap>
   <collection oftype="com.zzg.entity.BaoanPrivilege"></collection>
  </resultmap>
  
  <sql>
    id, privilege_name, privilege_code, pid, url, order_rank, privilege_type, privilege_description, 
    state, created_by, created_dt, version, updated_by, updated_dt, icon_name, delete_flag
  </sql>
  
  <sql>
   <if>
    and baoan_privilege.privilege_type = #{privilegeType}
   </if>
   <if>
    and baoan_privilege.pid = #{pid}
   </if>
  </sql>
  
  <sql>
   <if>
    and baoan_privilege.privilege_type = #{vo.privilegeType}
   </if>
   <if>
    and baoan_privilege.pid = #{vo.pid}
   </if>
  </sql>
  
  <select>
 SELECT
  <include></include>
 FROM baoan_privilege
 WHERE pid = #{id}
 </select>
 
 <select>
    select
  <include></include>
    FROM baoan_privilege
    WHERE 1 = 1 
    <include></include>
  </select>
  <select>
    select
  <include></include>
    FROM baoan_privilege
    WHERE 1 = 1 
    <include></include>
  </select>
</mapper>
Copier après la connexion
package com.zzg.service;
 
import java.util.List;
import java.util.Map;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzg.entity.BaoanPrivilege;
import com.zzg.vo.BaoanPrivilegeVo;
 
public interface BaoanPrivilegeService extends IService<baoanprivilege> {
 List<baoanprivilegevo> selectList(Map<string> parameter);
 
 IPage<baoanprivilegevo> selectPage(Page<baoanprivilegevo> page, Map<string> parameter);
}</string></baoanprivilegevo></baoanprivilegevo></string></baoanprivilegevo></baoanprivilege>
Copier après la connexion

Étape 4 :L'interface de la couche contrôleur fournit des services externes

package com.zzg.service.impl;
 
import java.util.List;
import java.util.Map;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzg.entity.BaoanPrivilege;
import com.zzg.mapper.BaoanPrivilegeMapper;
import com.zzg.service.BaoanPrivilegeService;
import com.zzg.vo.BaoanPrivilegeVo;
 
@Service
public class BaoanPrivilegeServiceImpl extends ServiceImpl<baoanprivilegemapper> implements BaoanPrivilegeService {
 @Autowired
 private BaoanPrivilegeMapper mapper;
 
 @Override
 public List<baoanprivilegevo> selectList(Map<string> parameter) {
  // TODO Auto-generated method stub
  return mapper.selectList(parameter);
 }
 
 @Override
 public IPage<baoanprivilegevo> selectPage(Page<baoanprivilegevo> page, Map<string> parameter) {
  // TODO Auto-generated method stub
  return mapper.selectPage(page, parameter);
 }
 
}</string></baoanprivilegevo></baoanprivilegevo></string></baoanprivilegevo></baoanprivilegemapper>
Copier après la connexion

Affichage de l'effet frontal :

Comment utiliser SpringBoot+MyBatisPlus+MySQL8 pour implémenter une requête de structure arborescente

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal