栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java树形结构数据获取方式(mysql+MyBatis)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java树形结构数据获取方式(mysql+MyBatis)

树形结构数据获取方式
  • 前言
    • 一.数据库一次性查出来处理,lamada处理成树形结构
      • 1.对应数据库表
      • 2.表对应的实体类
      • 3.对应方法sql
      • 4.单元测试用例
      • 5.查询树形结果
    • 二.sql进行处理,形成树形结果,适用于jdk1.7以下版本
    • 总结

前言

树形结构是一个比较常用的数据类型,一般多用于查询包含父子类关系的数据。这次以一个简单的地域信息,通过jdk1.8新特性lamda来进行处理,就比较方便处理的,主要还是采用了递归思想。

一.数据库一次性查出来处理,lamada处理成树形结构 1.对应数据库表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for area
-- ----------------------------
DROp TABLE IF EXISTS `area`;
CREATE TABLE `area`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'PK',
  `area_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '地区名称',
  `parent_id` int(11) NOT NULL COMMENT '父Id',
  `sort` int(11) NULL DEFAULT NULL COMMENT '排序',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '地区表' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of area
-- ----------------------------
INSERT INTO `area` VALUES (1, '广东省', 0, 1);
INSERT INTO `area` VALUES (2, '深圳市', 1, 1);
INSERT INTO `area` VALUES (3, '广州市', 1, 2);
INSERT INTO `area` VALUES (4, '湖南省', 0, 2);
INSERT INTO `area` VALUES (5, '长沙市', 4, 1);
INSERT INTO `area` VALUES (6, '株洲市', 4, 2);
INSERT INTO `area` VALUES (7, '湖北省', 0, 3);
INSERT INTO `area` VALUES (8, '武汉市', 7, 1);
INSERT INTO `area` VALUES (9, '汉口区', 8, 1);
INSERT INTO `area` VALUES (10, '汉阳区', 8, 2);
INSERT INTO `area` VALUES (11, '武昌区', 8, 3);
INSERT INTO `area` VALUES (12, '鄂州市', 7, 2);
INSERT INTO `area` VALUES (13, '鄂城区', 12, 1);
INSERT INTO `area` VALUES (14, '华容区', 12, 2);
INSERT INTO `area` VALUES (15, '梁子湖区', 12, 3);

SET FOREIGN_KEY_CHECKS = 1;
2.表对应的实体类
	
	@Data
	public class Area  {
	    private Integer id;
	    private String areaName;
	    private Integer parentId;
	    private Integer sort;
	    // 封装的子类集合
	    private List childrenList;
	}
3.对应方法sql
	// 查询所有地域信息
    List getAllArea(Area area);

    
    
        select id ,area_name ,parent_id from area where parent_id = #{parentId}