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
WBOYavant
2023-05-30 18:07:061155parcourir

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);

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;
}

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>

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>

É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>
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>

É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>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer