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个用户多个角色 Listroles; } public class Role{ //1个角色被多个用户使用 List users; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)