遇到這樣一個須要,菜單對象Module,分爲主級菜單跟子級菜單,如今想查詢出來拼成一個樹。java
開始想直接查出來list而後再手動轉,發現這樣也不太方便,以爲這個挺適合交給mybatis來完成mybatis
類主要屬性以下圖:code
public class Module extends TreeEntity<Module> { private String name; // 名稱 private String type; // 類型 private Module parent; // 父級 private List<Module> children; //子菜單 }
查詢語句是對象
SELECT a.id, a.name, b.id as id1, b.name as name1 FROM `bd_prj_module` a JOIN `bd_prj_module` b on a.id = b.parent_id ORDER BY a.sort,b.sort
映射文件是it
<resultMap id="ModuleResultMap" type="com.zt.modules.prj.entity.Module"> <id column="id" property="id" jdbcType="VARCHAR" /> <result column="name" property="name" jdbcType="VARCHAR"/> <collection property="children" ofType="com.zt.modules.prj.entity.Module"> <id column="id1" property="id" jdbcType="VARCHAR"/> <id column="name1" property="name" jdbcType="VARCHAR"/> </collection> </resultMap>
缺點是不支持三級菜單,若是有更方便的方法,煩請告知。io