Mybatis implementation reads tree structure data in detail as follows:
Table structure
CREATE TABLE `lscrm_function_privilege` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'number',`create_id` varchar(30) NOT NULL DEFAULT 'sys',`update_id` varchar(30) NOT NULL DEFAULT 'sys',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'create time',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Modification time',`validity` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'Validity 1. Valid 0. Invalid',`code` varchar(50) NOT NULL DEFAULT '' COMMENT 'Coding',`function_name` varchar(50) NOT NULL DEFAULT '' COMMENT 'name',`parent_id` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'parent node',`is_leaf_node` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'Is the leaf node (a leaf node is a node with a degree of 0, which is a node without a child node). When adding a child node, parent_id is_leaf_node needs to be set to 0',`sub_system_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Subsystem',`is_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Is the UI hidden? Not displayed on ui',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COMMENT='Sub-code Create /r/n according to the parent code, such as: customer.add';
Construct data
INSERT INTO `lscrm_function_privilege` VALUES ('1', 'sys', 'sys', '2016-09-07 15:20:40', '2016-09-07 15:21:17', '1', 'WEB.PERMISSION', 'Permission Management', '0', '0', '1', '0');INSERT INTO `lscrm_function_privilege` VALUES ('2', 'sys', 'sys', '2016-09-07 15:21:12', '2016-09-07 15:21:40', '1', 'WEB.PERMISSION.USER-MGMT', 'User Management', '1', '0', '1', '1', '0');INSERT INTO `lscrm_function_privilege` VALUES ('3', 'sys', 'sys', '2016-09-07 15:22:16', '2016-09-07 15:22:35', '1', 'WEB.PERMISSION.USER-MGMT.ADD', 'Add User', '2', '1', '1', '0');INSERT INTO `lscrm_function_privilege` VALUES ('4', 'sys', 'sys', '2016-09-07 15:23:17', '2016-09-07 15:23:17', '1', 'WEB.PERMISSION.USER-MGMT.MODIFY', 'Modify User', '2', '1', '1', '0');INSERT INTO `lscrm_function_privilege` VALUES ('5', 'sys', 'sys', '2016-09-07 16:10:37', '2016-09-07 16:10:42', '1', 'APP.CUSTOMER', 'Customer Management', '0', '0', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('6', 'sys', 'sys', 'sys', '2016-09-07 16:11:06', '2016-09-07 16:11:20', '1', 'APP.CUSTOMER.ADD', 'Add Customer', '5', '1', '2', '0');INSERT INTO 'lscrm_function_privilege` VALUES ('7', 'sys', 'sys', '2016-09-07 16:11:06', '2016-09-07 16:11:20', '1', 'APP.CUSTOMER.MODIFY', '5', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('8', 'sys', 'sys', '2016-09-07 16:12:33', '2016-09-07 16:14:10', '1', 'APP.CUSTOMER.VIEWDETAIL', 'View Customer Details', '5', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('9', 'sys', 'sys', '2016-09-07 16:12:33', '2016-09-07 16:12:33', '1', 'APP.CUSTOMER.ADDVISIT', 'Add Visit', '5', '1', '2', '0');INSERT INTO 'lscrm_function_privilege` VALUES ('10', 'sys', 'sys', '2016-09-07 16:13:59', '2016-09-07 16:14:17', '1', 'APP.CUSTOMER.VIEWDEMAND', 'View Customer Procurement Requirements', '5', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('11', 'sys', 'sys', '2016-09-07 16:13:59', '2016-09-07 16:14:17', '1', 'APP.CUSTOMER.VIEWORDER', 'View Customer Order', '5', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('12', 'sys', 'sys', '2016-09-07 16:13:59', '2016-09-07 16:14:17', '1', 'APP.CUSTOMER.VIEWSHOP', 'View Customer Order', '5', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('13', 'sys', 'sys', '2016-09-07 16:17:28', '2016-09-07 16:18:39', '1', 'APP.CUSTOMER.VIEWREPLY', 'View order grab list', '5', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('14', 'sys', 'sys', '2016-09-07 16:19:32', '2016-09-07 16:23:51', '1', 'APP.CUSTOMER.FASTOPENSHOP', 'Quick Store Opening', '5', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('15', 'sys', 'sys', '2016-09-07 16:22:33', '2016-09-07 16:22:33', '1', 'APP.DEMAND', 'Demand Management', '0', '0', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('17', 'sys', 'sys', '2016-09-07 16:23:21', '2016-09-07 16:23:21', '1', 'APP.DEMAND.PRIVATE', 'Private sea demand', '15', '1', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('18', 'sys', 'sys', '2016-09-07 16:23:58', '2016-09-07 16:23:58', '1', 'APP.DEMAND.FEEDBACK', 'Page Feedback', '15', '1', '2', '0');INSERT INTO `lscrm_function_privilege` VALUES ('19', 'sys', 'sys', '2016-09-07 16:24:47', '1', 'APP.DEMAND.PUSHSEARCH', 'Pull Seller Search', '15', '1', '2', '0');INSERT INTO '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1');INSERT INTO `lscrm_function_privilege` VALUES ('21', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', 'APP.KPI.VIEWDATA', 'View performance data', '20', '1', '2', '0');Entity bean
package com.lianshang.crm.biz.entity;import com.google.common.base.MoreObjects;import java.util.ArrayList;import java.util.Date;import java.util.List;public class LscrmFunctionPrivilegeEntity {/**Number**/private int id;private String createId;private String updateId;/**Creation time**/private Date createTime;/**Modification time**/private Date updateTime=new Date();/**Validity 1.Valid 0. Invalid**/private int validity=1;/**Encoding**/private String code;/**Name**/private String functionName;/**Parent node**/private int parentId;/**Is the leaf node (leave node is a node with a degree of 0 and a node without child nodes). When adding child nodes, parent_id is_leaf_node needs to be set to 0**/private int isLeafNode;/**Affiliated subsystem**/private int subSystemId;/**Is the UI hidden? It is not displayed on the ui**/private int isHidden=1;private List<LscrmFunctionPrivilegeEntity> privilegeList = new ArrayList<>();//get()/set() omitted. . . }package com.lianshang.crm.biz.entity;import java.util.ArrayList;import java.util.Date;import java.util.List;/*** Created by zhenyu on 2016/9/8.*/public class LscrmFunctionPrivilegeTree {/**Number**/private int id;private String createId;private String updateId;/**Creation time**/private Date updateTime=new Date();/**Validity 1.Valid 0. Invalid**/private int validity=1;/**Encoding**/private String code;/**Name**/private String functionName;/**Parent node**/private int parentId;/**Is the leaf node (leave node is a node with a degree of 0 and a node without child nodes). When adding child nodes, parent_id is_leaf_node needs to be set to 0**/private int isLeafNode;/**Affiliated subsystem**/private int subSystemId;/**Is the UI hidden? It is not displayed on the ui**/private int isHidden=1;private List<LscrmFunctionPrivilegeEntity> privilegeList = new ArrayList<>();}mapper configuration
<?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.lianshang.crm.biz.dao.LscrmFunctionPrivilegeDao"><cacheeviction="FIFO"flushInterval="60000"size="1024"readOnly="true"/><resultMap id="LscrmFunctionPrivilegeResult" type="LscrmFunctionPrivilegeEntity"><id property="id" column="id"/><result property="createId" column="create_id"/><result property="updateId" column="update_id"/><result property="createTime" column="create_time"/><result property="updateTime" column="update_time"/><result property="validity"/><result property="code" column="code"/><result property="functionName" column="function_name"/><result property="parentId" column="parent_id"/><result property="isLeafNode" column="is_leaf_node"/><result property="subSystemId" column="sub_system_id"/><result property="isHidden" column="is_hidden"/><result property="isHidden" column="is_hidden"/><result property="SubPrivilegesResult" type="LscrmFunctionPrivilegeEntity" extends="LscrmFunctionPrivilegeResult"><collection property="privilegeList" javaType="java.util.ArrayList" column="id"ofType="LscrmFunctionPrivilegeEntity" select="selectSubPrivileges"></collection></resultMap><resultMap id="LscrmFunctionPrivilegeTreeResult" type="LscrmFunctionPrivilegeTree" extends="SubPrivilegesResult"><!--<association property="functionPrivilege" column="id" javaType="LscrmFunctionPrivilegeEntity" resultMap="LscrmFunctionPrivilegeResult"/>--><collection property="privilegeList" javaType="java.util.ArrayList" column="id"ofType="LscrmFunctionPrivilegeEntity" select="selectSubPrivileges"></collection></resultMap><sql id="tbl_name">lscrm_function_privilege</sql><sql id="role_privilege_tbl_name">lscrm_role_privilege</sql><sql id="select_sql">select id, create_id, update_id, create_time, update_time, validity, code, function_name, parent_id, is_leaf_node, sub_system_id, is_hidden from<include refid="tbl_name"/></sql><select id="readAllPrivileges" resultMap="LscrmFunctionPrivilegeTreeResult" useCache="true"><include refid="select_sql"/>WHERE parent_id = 0<if test="subSystemId > 0 ">AND sub_system_id= #{subSystemId}</if></select><select id="selectSubPrivileges" resultMap="SubPrivilegesResult"><include refid="select_sql"/>WHERE parent_id = #{id}</select></mapper>package com.lianshang.crm.biz.dao;import com.lianshang.crm.api.dto.LscrmFunctionPrivilege;import com.lianshang.crm.biz.entity.LscrmFunctionPrivilegeEntity;import com.lianshang.crm.biz.entity.LscrmFunctionPrivilegeTree;import org.apache.ibatis.annotations.Param;import java.util.List;public interface LscrmFunctionPrivilegeDao {List<LscrmFunctionPrivilegeTree> readAllPrivileges(@Param("subSystemId")int subSystemId);}service
package com.lianshang.crm.biz.service.impl;import com.alibaba.fastjson.JSON;import com.google.common.base.Function;import com.lianshang.common.utils.general.GeneralResult;import com.lianshang.common.utils.general.GuavaUtil;import com.lianshang.common.utils.general.StringUtil;import com.lianshang.crm.api.dto.LscrmFunctionPrivilege;import com.lianshang.crm.api.service.LscrmFunctionPrivilegeService;import com.lianshang.crm.biz.dao.LscrmFunctionPrivilegeDao;import com.lianshang.crm.biz.entity.LscrmFunctionPrivilegeEntity;import com.lianshang.crm.biz.entity.LscrmFunctionPrivilegeTree;import org.springframework.beans.factory.annotation.Autowired;import java.util.ArrayList;import java.util.Date;import java.util.List;import static com.google.common.collect.FluentIterable.from;public class LscrmFunctionPrivilegeServiceImpl implements LscrmFunctionPrivilegeService {@Autowiredprivate LscrmFunctionPrivilegeDao lscrmFunctionPrivilegeDao;@Overridepublic GeneralResult<String> readAllPrivileges(int subSystemId) {List<LscrmFunctionPrivilegeTree> privilegeTrees = lscrmFunctionPrivilegeDao.readAllPrivileges(subSystemId);return new GeneralResult<>(JSON.toJSONString(privilegeTrees));}}Return result
[{"code": "WEB.PERMISSION","createId": "sys","createTime": 1473232840000,"functionName": "Permission Management","hidden": 0,"id": 1,"leafNode": 0,"parentId": 0,"privilegeList": [{"code": "WEB.PERMISSION.USER-MGMT","createId": "sys","createTime": 1473232872000,"functionName": "User Management","hidden": 0,"id": 2,"leafNode": 0,"parentId": 1,"privilegeList": [{"code": "WEB.PERMISSION.USER-MGMT.ADD","createId": "sys","createTime": 1473232936000,"functionName": "New user","hidden": 0,"id": 3,"leafNode": 1,"parentId": 2,"privilegeList": [],"subSystemId": 1,"updateId": "sys","updateTime": 1473232955000,"validity": 1},{"code": "WEB.PERMISSION.USER-MGMT.MODIFY","createId": "sys","createTime": 1473232997000,"functionName": "Modify user","hidden": 0,"id": 4,"leafNode": 1,"parentId": 2,"privilegeList": [],"subSystemId": 1,"updateId": "sys","updateTime": 1473232997000,"validity": 1}],"subSystemId": 1,"updateId": "sys","updateTime": 1473232900000,"validity": 1}],"subSystemId": 1,"updateId": "sys","updateTime": 1473232877000,"validity": 1}] The above is the example code for the implementation of mybatis reading tree structure data introduced to you. I hope it will be helpful to you. If you have any questions, please leave me a message and the editor will reply to you in time. Thank you very much for your support to Wulin.com website!