今天在作权限的时候用到了2级association,association里面还有一级association,废话很少说。贴代码java
<resultMap type="com.pinyu.system.entity.PermissionEntity" id="baseResultMap"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="code" property="code"/> <result column="url" property="url"/> <result column="type" property="type"/> <result column="menu_id" property="menuId"/> <association property="menu" javaType="com.pinyu.system.entity.MenuEntity" column="{id=menu_id}" select="findMenu"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="icon" property="icon"/> <result column="url" property="url"/> <result column="level" property="level"/> <result column="parent_id" property="parentId"/> <result column="sort" property="sort"/> <association property="parent" javaType="com.pinyu.system.entity.MenuEntity" column="{id=parent_id}" select="findMenu"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="icon" property="icon"/> <result column="url" property="url"/> <result column="level" property="level"/> <result column="parent_id" property="parentId"/> <result column="sort" property="sort"/> </association> </association> </resultMap>
<select id="findPermissionByRoleId" parameterType="java.lang.Integer" resultMap="baseResultMap"> select p.* from sys_role_permission rp,sys_permission p where rp.role_id=#{roleId} and rp.permission_id=p.id; </select>
<select id="findMenu" resultType="com.pinyu.system.entity.MenuEntity"> select * from sys_menu where id = #{id} </select>
先说明下状况:PermissionEntity是按钮级别的权限,MenuEntity是菜单,PermissionEntity关联了MenuEntity的id,MenuEntity里面还有上一级父菜单,下一级子菜单先不说。url
最开始是以上代码,能够查询到第一级association里面的menu的信息,觉得menu里面还有一级父菜单,因而往里面再添加了一个association,可是最终结果menu里面的parent_id和parent始终是取不到的,不知道是写法不对仍是什么,有知道的还望告知,十分感谢。code
编译也不报错,启动也不报错,查询也不报错。后来找了半个小时实在没找到错误在哪里?就换方式了ci
换成了如下方式,先把PermissionEntity关联的菜单一并查出来再经过parent_id去查询父菜单。it
代码:io
<resultMap type="com.pinyu.system.entity.PermissionEntity" id="menuMap"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="code" property="code"/> <result column="url" property="url"/> <result column="type" property="type"/> <result column="menu_id" property="menuId"/> <association property="menu" javaType="com.pinyu.system.entity.MenuEntity"> <result column="mid" property="id"/> <result column="mname" property="name"/> <result column="micon" property="icon"/> <result column="murl" property="url"/> <result column="mlevel" property="level"/> <result column="msort" property="sort"/> <result column="mparentId" property="parentId"/> <association property="parent" javaType="com.pinyu.system.entity.MenuEntity" column="{id=mparentId}" select="findMenu"> <result column="id" property="id"/> <result column="name" property="name"/> <result column="icon" property="icon"/> <result column="url" property="url"/> <result column="level" property="level"/> <result column="parent_id" property="parentId"/> <result column="sort" property="sort"/> </association> </association> </resultMap> <select id="findMenu" resultType="com.pinyu.system.entity.MenuEntity"> select * from sys_menu where id = #{id} </select> <select id="findPermissionByRoleId" parameterType="java.lang.Integer" resultMap="menuMap"> select p.*,m.id mid,m.name mname,m.icon micon,m.level mlevel,m.parent_id mparentId,m.sort msort,m.url murl from sys_role_permission rp,sys_permission p,sys_menu m where rp.role_id=#{roleId} and rp.permission_id=p.id and p.menu_id=m.id; </select>
作个记录,以避免之后遇到浪费时间。编译
第一种若是有大神知道的,真心但愿告知。十分感谢 !class