经常会用到mybatis的Collection标签来做级联查询或递归查询,现通过一个伪例来简单的说明一下使用中的关键点:
首先先列出三个表,给出一个场景:
1,角色表 | t_role( id,name ) | |
2,菜单表 | t_menu( id, name, pid ) | 菜单表是个有个pid,指向上级菜单的id,所以是个树形表 |
3,角色菜单关联表 | t_role_menu( role_id, menu_id ) | 角色和菜单对多关联 |
java对象如下:
//菜单对象
@Set
@Get
public class Menu {
private Long id;
private String name;
private Long pid;
private List<Menu> subMenus;//子菜单集合
}
//角色对象
@Set
@Get
public class Role {
private Long id;
private String name;
private List<Menu> menus;//关联菜单集合
}
一,简单关联查询:根据角色id查询角色,以及角色所关联的菜单的集合;
mapper xml文件配置如下:
<!--1,根据主键查询角色,及其关联的菜单-->
<select id="selectRoleById" parameterType="Long" resultMap="RoleResultMap">
select * from t_role where id = #{id}
</select>
<!--2,角色结果映射-->
<resultMap id="RoleResultMap" type&