Heim > Datenbank > MySQL-Tutorial > So verwenden Sie SpringBoot+MyBatisPlus+MySQL8, um eine Baumstrukturabfrage zu implementieren

So verwenden Sie SpringBoot+MyBatisPlus+MySQL8, um eine Baumstrukturabfrage zu implementieren

WBOY
Freigeben: 2023-05-30 18:07:06
nach vorne
1206 Leute haben es durchsucht

Szenario:

Bei der Implementierung des Berechtigungsfunktionsmoduls müssen die abgefragten Berechtigungsdaten in einer Baumstruktur an das Frontend zurückgegeben werden.

Funktionsimplementierung:

Schritt 1: Definition der Berechtigungstabellenstruktur und deren Funktionsdemonstrationsdaten.

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);
Nach dem Login kopieren

Zweiter Schritt:Berechtigungstabellen-Entitätsdefinition und ihre erweiterten Objekte

Basisobjekte

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;
}
Nach dem Login kopieren

Erweiterte Objekte

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>
Nach dem Login kopieren

Schritt drei:Berechtigungstabellen-Mapper-Definition

Mapper-Schnittstelle. Definition

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>
Nach dem Login kopieren

ma pper.xml Dateidefinition

<?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>
Nach dem Login kopieren

Schritt 3: Berechtigungstabelle Dienstdefinition

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>
Nach dem Login kopieren
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>
Nach dem Login kopieren

Schritt 4:Controller-Layer-Schnittstelle stellt externe Dienste bereit

 // 查
 @ApiOperation(httpMethod = "POST", value = "基于分页查询符合条件权限记录")
 @RequestMapping(value = "/getPage", method = { RequestMethod.POST })
 @ApiImplicitParams({
   @ApiImplicitParam(name = "username", value = "管理员名称", required = false, dataType = "String", paramType = "query") })
 public Result getPage(@RequestBody Map<string> parame) {
  // 动态构建添加参数
//  QueryWrapper<baoanprivilegevo> query = new QueryWrapper<baoanprivilegevo>();
//  this.buildQuery(parame, query);
 
  PageParame pageParame = this.initPageBounds(parame);
  Page<baoanprivilegevo> page = new Page<baoanprivilegevo>(pageParame.getPage(), pageParame.getLimit());
  IPage<baoanprivilegevo> list = baoanPrivilegeService.selectPage(page, parame);
  return Result.ok().setDatas(list);
 }</baoanprivilegevo></baoanprivilegevo></baoanprivilegevo></baoanprivilegevo></baoanprivilegevo></string>
Nach dem Login kopieren

Front-End-Effektanzeige:

So verwenden Sie SpringBoot+MyBatisPlus+MySQL8, um eine Baumstrukturabfrage zu implementieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie SpringBoot+MyBatisPlus+MySQL8, um eine Baumstrukturabfrage zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage