做項目時盛泡,我們往往要用樹形結(jié)構來表示某些數(shù)據(jù)之間的關聯(lián)關系蜕琴,如行政部門厚柳、菜單涨颜、行政區(qū)域等等。這些樹狀結(jié)構往往需要在數(shù)據(jù)庫中持久化依沮。在進行樹形結(jié)構表設計時涯贞,一般會把父子關系的數(shù)據(jù)放在一張表中,并添加一個字段危喉,指向父親節(jié)點宋渔。如下所示的行政區(qū)域表:
那么如何在Mybatis中對這種樹形關系表進行查詢呢?今天小博老師就給大家介紹下如何在Mybatis中實現(xiàn)對樹形關系表的遞歸查詢姥饰。
首先建立與屬性表對應的Java Bean Area.java,源碼如下:
childList屬性存放當前Area對象的所有子節(jié)點的集合孝治。
根據(jù)JavaBean的關系設置列粪,我們再來設計Mapper XML的映射:
我們使用了collection元素的select屬性,根據(jù)當前Area的Id查詢Area的所轄區(qū)域列表谈飒。查詢語句findAreaByparentId中岂座,把傳入的Areaid當做parent id,把所有下屬區(qū)域全部查詢出來杭措。
Mapper接口文件定義就很簡單了:
測試核心代碼:
測試結(jié)果: