日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

springboot+mybatis plus實(shí)現(xiàn)樹形結(jié)構(gòu)查詢

瀏覽:179日期:2023-02-24 10:29:50
目錄背景使用場(chǎng)景設(shè)計(jì)思路遞歸模型實(shí)現(xiàn)代碼注意事項(xiàng)總結(jié)背景

實(shí)際開發(fā)過程中經(jīng)常需要查詢節(jié)點(diǎn)樹,根據(jù)指定節(jié)點(diǎn)獲取子節(jié)點(diǎn)列表,以下記錄了獲取節(jié)點(diǎn)樹的操作,以備不時(shí)之需。

使用場(chǎng)景

可以用于系統(tǒng)部門組織機(jī)構(gòu)、商品分類、城市關(guān)系等帶有層級(jí)關(guān)系的數(shù)據(jù)結(jié)構(gòu);

設(shè)計(jì)思路遞歸模型

即根節(jié)點(diǎn)、枝干節(jié)點(diǎn)、葉子節(jié)點(diǎn),數(shù)據(jù)模型如下:

id code name parent_code 1 10000 電腦 0 2 20000 手機(jī) 0 3 10001 聯(lián)想筆記本 10000 4 10002 惠普筆記本 10000 5 1000101 聯(lián)想拯救者 10001 6 1000102 聯(lián)想小新系列 10001

實(shí)現(xiàn)代碼

表結(jié)構(gòu)

CREATE TABLE `tree_table` ( `id` int NOT NULL AUTO_INCREMENT COMMENT ’主鍵ID’, `code` varchar(10) NOT NULL COMMENT ’編碼’, `name` varchar(20) NOT NULL COMMENT ’名稱’, `parent_code` varchar(10) NOT NULL COMMENT ’父級(jí)編碼’, PRIMARY KEY (`id`) USING BTREE) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT=’樹形結(jié)構(gòu)測(cè)試表’;

表數(shù)據(jù)

INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES (’10000’, ’電腦’, ’0’);INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES (’10001’, ’聯(lián)想筆記本’, ’10000’);INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES (’10002’, ’惠普筆記本’, ’10000’);INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES (’1000101’, ’聯(lián)想拯救者’, ’10001’);INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES (’1000102’, ’聯(lián)想小新系列’, ’10001’);

實(shí)體

@Data@TableName('tree_table')@EqualsAndHashCode(callSuper = false)@Accessors(chain = true)public class TreeTable {​ /** * 主鍵ID */ @TableId(type = IdType.AUTO) private Integer id; /** * 編碼 */ private String code; /** * 名稱 */ private String name; /** * 父級(jí)編碼 */ private String parentCode;​ /** * 子節(jié)點(diǎn) */ @TableField(exist = false) private List<TreeTable> childNode;}

mybatis

mapper

public interface TreeTableMapper extends BaseMapper<TreeTable> { /** * 獲取樹形結(jié)構(gòu)數(shù)據(jù) * * @return 樹形結(jié)構(gòu) */ public List<TreeTable> noteTree();}

xml

<?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.springboot.example.mysqltree.mapper.TreeTableMapper'> <resultMap type='com.springboot.example.mysqltree.model.entity.TreeTable'><result column='id' property='id'/><result column='code' property='code'/><result column='name' property='name'/><result column='parent_code' property='parentCode'/> </resultMap> <resultMap type='com.springboot.example.mysqltree.model.entity.TreeTable' extends='BaseResultMap'><collection property='childNode' column='code' ofType='com.springboot.example.mysqltree.model.entity.TreeTable' javaType='java.util.ArrayList' select='nextNoteTree'>​</collection> </resultMap>​ <sql id='Base_Column_List'>id,code,`name`,parent_code </sql> <select resultMap='NodeTreeResult'>select<include refid='Base_Column_List'/>from tree_tablewhere parent_code=#[code] </select> <select resultMap='NodeTreeResult'>select<include refid='Base_Column_List'/>from tree_tablewhere parent_code=’0’ </select></mapper> noteTree :獲取所有父級(jí)節(jié)點(diǎn)數(shù)據(jù); nextNoteTree:循環(huán)獲取子節(jié)點(diǎn)數(shù)據(jù),知道葉子節(jié)點(diǎn)結(jié)束; column:關(guān)聯(lián)表的列名; ofType:返回類型

啟動(dòng)類

@Slf4j@Componentpublic class TreeTableCommandLineRunner implements CommandLineRunner { @Resource private TreeTableMapper treeTableMapper;​ @Override public void run(String... args) throws Exception {log.info(JSONUtil.toJsonPrettyStr(treeTableMapper.noteTree())); }}

最終效果

[ {'code': '10000','childNode': [ {'code': '10001','childNode': [ {'code': '1000101','childNode': [],'parentCode': '10001','name': '聯(lián)想拯救者','id': 5 }, {'code': '1000102','childNode': [],'parentCode': '10001','name': '聯(lián)想小新系列','id': 6 }],'parentCode': '10000','name': '聯(lián)想筆記本','id': 3 }, {'code': '10002','childNode': [],'parentCode': '10000','name': '惠普筆記本','id': 4 }],'parentCode': '0','name': '電腦','id': 1 }]注意事項(xiàng)

使用mybatis時(shí)如加載不到mapper xml需在pom.xml添加以下配置:

<resources> <resource><directory>src/main/resources</directory><filtering>true</filtering> </resource> <resource><directory>src/main/java</directory><includes> <include>**/*.xml</include></includes> </resource></resources>總結(jié)

使用遞歸方式是比較常見的方式,優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,直觀的體現(xiàn)層級(jí)關(guān)系,但是數(shù)據(jù)量大的情況下效率會(huì)略低;歡迎使用其他方式的小伙伴分享自己的實(shí)現(xiàn)思路。

到此這篇關(guān)于springboot+mybatis plus實(shí)現(xiàn)樹形結(jié)構(gòu)查詢的文章就介紹到這了,更多相關(guān)springboot 樹形結(jié)構(gòu)查詢內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品久久久久久| 一级欧洲+日本+国产| 最近国产精品视频| 伊人国产精品| 日本午夜精品久久久久| 国产亚洲欧美日韩精品一区二区三区| 国产精品蜜月aⅴ在线| 国产一区二区三区国产精品| 极品av在线| 欧美a级一区| 免费在线观看成人| 国产精品巨作av| 欧美日韩精品免费观看视完整| 亚洲大全视频| 日产欧产美韩系列久久99| 麻豆精品久久久| 午夜av不卡| 一本色道精品久久一区二区三区| 亚州精品视频| 国产精品久久久久久久久久10秀| 香蕉精品久久| 人人精品久久| 日韩国产一区二区| 亚洲影院天堂中文av色| 久久一区国产| 91高清一区| 久久国产尿小便嘘嘘| 91看片一区| 中文字幕亚洲影视| av在线资源| 亚洲精品九九| 国产成人精品一区二区三区免费 | 夜夜嗨网站十八久久| 奇米777国产一区国产二区| 精品网站999| 免费不卡在线视频| 国产成人调教视频在线观看| 一本色道久久精品| 精品网站999| 亚洲天堂免费| 91一区二区| 日韩一区精品视频| 精品美女在线视频| 亚洲精品裸体| 色88888久久久久久影院| 日韩精品免费一区二区夜夜嗨 | 成人黄色av| 日韩制服丝袜先锋影音| 韩国一区二区三区视频| 亚洲精品91| 97精品一区| 国产精品中文字幕亚洲欧美| 国产亚洲在线观看| 国产传媒av在线| 久久国产尿小便嘘嘘| 久久成人精品| 成人在线网站| 精品国产精品国产偷麻豆| 亚洲精品韩国| 夜夜嗨av一区二区三区网站四季av| 国产一区二区三区精品在线观看| 综合日韩在线| 亚洲激情欧美| 999国产精品视频| 久久的色偷偷| 奇米亚洲欧美| 亚洲va久久久噜噜噜久久| 欧美综合另类| 久久婷婷久久| 日韩欧美一区二区三区在线视频 | 伊人成人在线视频| 日产精品一区| 欧美激情国产在线| 欧美a在线观看| 日韩高清二区| 亚洲精品女人| 亚洲资源av| 欧美国产91| 国产一区清纯| 免费观看久久av| 999久久久91| 久久精品国产99久久| 久久久久国产精品一区三寸| 97精品一区二区| 国产欧美一区二区三区精品酒店| 国产一区一一区高清不卡| 美女精品一区二区| 美女性感视频久久| 国产高清日韩| 精品一区av| bbw在线视频| 欧美精品资源| 999国产精品永久免费视频app| 国产精品久久久久av电视剧| 国产中文在线播放| 中文字幕系列一区| 国产99久久| 国产精品毛片在线看| 石原莉奈在线亚洲二区| 亚洲制服欧美另类| 欧美私人啪啪vps| 欧美国产三级| 精品视频网站| 神马久久午夜| 欧洲毛片在线视频免费观看| 欧美亚洲精品在线| 国产精品日韩| 免费不卡在线视频| 欧美一级二级视频| 精品国产一级| 亚洲午夜精品久久久久久app| 欧美日韩国产免费观看| 亚洲开心激情| 国产亚洲观看| 精品亚洲精品| 欧美午夜精品一区二区三区电影| 亚洲女人av| 日韩福利视频导航| 精品国产aⅴ| 欧美1区免费| 91嫩草精品| 日本欧美不卡| 天堂成人免费av电影一区 | 亚洲三级毛片| 精品在线网站观看| 99视频精品视频高清免费| 亚洲一区二区动漫| 欧美三区不卡| 视频二区不卡| 亚洲v天堂v手机在线| 精品国产亚洲一区二区三区大结局| 色天使综合视频| 亚洲天堂免费| 精品一区二区三区中文字幕| 久久婷婷一区| 深夜福利亚洲| 国产中文在线播放| 免费在线观看不卡| 国产精品久久久久久久免费观看| aⅴ色国产欧美| 精品国产a一区二区三区v免费| 好吊视频一区二区三区四区| 国产精品中文| 欧美精品激情| 麻豆一区二区三| 久久亚洲电影| 在线中文字幕播放| 91免费精品国偷自产在线在线| 另类中文字幕国产精品| 日韩av中文字幕一区二区三区| 六月婷婷综合| 日本不卡在线视频| 国产综合精品| 国产中文欧美日韩在线| 亚洲精品综合| 一区二区三区四区在线看| 国产亚洲高清在线观看| 欧美69视频| 精品久久久久中文字幕小说| 亚洲日本国产| 亚洲国内精品| 国产精品久久久久久久免费观看| 亚洲精品黄色| 国产综合精品| 国产成人精品一区二区免费看京 | 亚洲欧美日本国产专区一区| 韩日一区二区| 日韩av网站在线观看| 一本一本久久| 久久久9色精品国产一区二区三区| 国产精品大片| 日韩精彩视频在线观看| 国产偷自视频区视频一区二区| 日韩中文欧美| 水蜜桃久久夜色精品一区| 91精品在线免费视频| 三级在线观看一区二区| 日韩欧美一区二区三区免费观看| 国产精品自在| 天堂va在线高清一区| 一本一本久久| 不卡在线一区二区| 久久久精品五月天| 日韩精品诱惑一区?区三区| 国产精品sm| 国产欧美午夜| 欧美一区91| 日本欧美一区二区在线观看| 六月天综合网| 另类av一区二区| 天堂成人国产精品一区| 99在线|亚洲一区二区| 香蕉久久99| 亚洲欧美综合| 99成人超碰| 三级小说欧洲区亚洲区| 亚洲免费福利| 日韩三区在线| 伊人久久大香线蕉av不卡| 久久精品国内一区二区三区水蜜桃|