resultMap 元素有很多子元素和一个值得深入探讨的结构。 下面是resultMap 元素的概念视图。
constructor - 用于在实例化类时,注入结果到构造方法中
idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能arg - 将被注入到构造方法的一个普通结果 id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能result – 注入到字段或 JavaBean 属性的普通结果association – 一个复杂类型的关联;许多结果将包装成这种类型
嵌套结果映射 – 关联可以是 resultMap 元素,或是对其它结果映射的引用 collection – 一个复杂类型的集合
嵌套结果映射 – 集合可以是 resultMap 元素,或是对其它结果映射的引用 discriminator– 使用结果值来决定使用哪个 resultMap
case – 基于某些值的结果映射
嵌套结果映射 – case 也是一个结果映射,因此具有相同的结构和元素;或者引用其它的结果映射 一对一
案例: 查询用户所属部门
pojopublic class User {
public User() {}
private Integer userId;
private String username;
private Integer deptId;
private Dept dept;
//省略get set toString
}
public class Dept {
public Dept() {}
//部门id
private Integer deptId;
//部门名称
private String deptName;
//父级id
private Integer parentId;
//省略get set toString
}
dao
User findById(@Param("userId") Integer userId);
xml
一对多select t.user_id, t.username, t2.dept_id, t2.dept_name, t2.parent_id from t_user t inner join t_dept t2 on t.user_id = t2.dept_id where t.user_id = #{userId}
案例:查询当前部门的用户
pojo跟一对一实体差不多,就是我们需要在Dept部门实体类中,定义一个用户集合
//用户集合属性 Listdaousers;
Dept findById(@Param("deptId") Integer deptId);
xml
多对多
多对多是一对多的特例,比如用户和角色
public class User{
//1个用户多个角色
List roles;
}
public class Role{
//1个角色被多个用户使用
List users;
}



