Mybatis-plus 进行无限极分类

使用Mybatis 注解的方式进行 无限极分类

我们在开发的时候总归会需要无限极分类的。比如说做权限控制的时候。 一个用户管理下有添加用户,编辑用户,删除用户。这些权限下面有的可能还存在子权限。那么这个时候就需要用刀无限极分类了。下面开始试试吧。

数据库表结构
DROP TABLE IF EXISTS `stack_permission`;
CREATE TABLE `stack_permission`  (
  `id` bigint(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `type` int(2) NOT NULL,
  `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `order` bigint(20) NOT NULL,
  `p_id` bigint(11) NOT NULL,
  `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `in_per_name`(`name`) USING BTREE,
  INDEX `in_per_type`(`type`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of stack_permission
-- ----------------------------
INSERT INTO `stack_permission` VALUES (1, '删除用户', 'd', 1, 'admin/d', 1, 5, '无');
INSERT INTO `stack_permission` VALUES (2, '添加用户', 'c', 1, 'admin/c', 1, 5, '无');
INSERT INTO `stack_permission` VALUES (3, '读取用户', 'r', 1, 'admin/r', 1, 5, '无');
INSERT INTO `stack_permission` VALUES (5, '用户管理', 'm', 1, '', 1, 0, '无');

SET FOREIGN_KEY_CHECKS = 1;

我们这边添加的数据为。

[
	{
		"code":"m",
		"description":"无",
		"name":"用户管理",
		"order":1,
		"pId":0,
		"permissions":[
						{
							"code":"d",
							"description":"无",
							"name":"删除用户",
							"order":1,
							"pId":5,
							"permissions":[],
							"type":1,
							"url":"admin/d"
						},
						...
					]
	}
]

这边默认你有mybatis-plus使用经验

实体类
package cn.fllday.memory.entity;

import java.io.Serializable;
import java.util.List;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author gssznb
 * @since 2019-07-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class StackPermission implements Serializable {

    private static final long serialVersionUID=1L;

    private Long id;

    private String name;

    private String code;

    private Integer type;

    private String url;

    private Long order;

    private Long pId;

    private String description;
	// 用来保存子集权限
    private List<StackPermission> permissions;
}
Dao层写法
@Select("SELECT * FROM stack_permission  WHERE p_id = #{id}")
@Results({
        @Result(property = "permissions",column = "id",id=true,many = @Many(select = "cn.fllday.memory.mapper.StackPermissionMapper.selectPermissionByPId"))
})
List<StackPermission> selectPermissionByPId(Long id);
使用Junit 测试
@SpringBootTest
@RunWith(SpringRunner.class)
public class Memory_8080AppTest {

    @Autowired
    private IStackAdminService iStackAdminService;
    @Autowired
    private IStackPermissionService iStackPermissionService;
    @Test
    public void contextLoads(){
        List<StackPermission> permissionById = iStackPermissionService.findPermissionById(0L);
        String s = JSON.toJSONString(permissionById);
        System.out.println(s);
    }
}

在这里插入图片描述

[
    {
        "code": "m",
        "description": "无",
        "name": "用户管理",
        "order": 1,
        "pId": 0,
        "permissions": [
            {
                "code": "d",
                "description": "无",
                "name": "删除用户",
                "order": 1,
                "pId": 5,
                "permissions": [
                    
                ],
                "type": 1,
                "url": "admin/d"
            },
            {
                "code": "c",
                "description": "无",
                "name": "添加用户",
                "order": 1,
                "pId": 5,
                "permissions": [
                    
                ],
                "type": 1,
                "url": "admin/c"
            },
            {
                "code": "r",
                "description": "无",
                "name": "读取用户",
                "order": 1,
                "pId": 5,
                "permissions": [
                    
                ],
                "type": 1,
                "url": "admin/r"
            }
        ],
        "type": 1,
        "url": ""
    }
]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值