遇到这样一个须要,菜单对象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