一:先看看数据结构,我用到的数据结构是一对多的,所以需要用到collection
1首先看实体
这个是角色实体
public class UserMenuRedisDto implements Serializable {
/**
* 角色code
*/
private String roleCode;
/**
* 角色对应的菜单
*/
private List<MenuRedisDto> menuRedisDtoList;
public String getRoleCode() {
return roleCode;
}
public void setRoleCode(String roleCode) {
this.roleCode = roleCode;
}
public List<MenuRedisDto> getMenuRedisDtoList() {
return menuRedisDtoList;
}
public void setMenuRedisDtoList(List<MenuRedisDto> menuRedisDtoList) {
this.menuRedisDtoList = menuRedisDtoList;
}
}
角色会对应菜单,这是菜单实体
public class MenuRedisDto implements Serializable {
private String code;
private String name;
private String parentCode;
private String anydog1;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentCode() {
return parentCode;
}
public void setParentCode(String parentCode) {
this.parentCode = parentCode;
}
public String getAnydog1() {
return anydog1;
}
public void setAnydog1(String anydog1) {
this.anydog1 = anydog1;
}
}
二:xml中的东西
<resultMap id="UserMenuRedisMap" type="com.cmcc.hr.hrp.menu.UserMenuRedisDto">
<result column="role_code" jdbcType="VARCHAR" property="roleCode"/>
<collection property="menuRedisDtoList" javaType="java.util.ArrayList" ofType="com.cmcc.hr.hrp.menu.MenuRedisDto" select="selectMenuRedis" column="{roleCode=role_code}"/>
</resultMap>
<select id="selectUserMenuRedis" resultMap="UserMenuRedisMap">
select role_code from hrp_role_resource_relation group by role_code
</select>
<select id="selectMenuRedis" resultType="com.cmcc.hr.hrp.menu.MenuRedisDto">
select a.resource_code code,a.resource_name name,a.anydog1 anydog1,b.parent_code parentCode from hrp_role_resource_relation a,hrp_resource_info b
where a.resource_code = b.code and a.role_code=#{roleCode}
</select>
三:dao层的东西
/**
* 查询角色对应的菜单
* @return
*/
List<UserMenuRedisDto> selectUserMenuRedis();
完工,这种做法适合修改,效率没有另外一种高,另外一种就是嵌套,resultMap嵌套,查询用关联查询,效果一样