MyBatis高级映射

MyBatis高级映射,第1张

MyBatis高级映射 resultMap元素

resultMap 元素有很多子元素和一个值得深入探讨的结构。 下面是resultMap 元素的概念视图。

constructor - 用于在实例化类时,注入结果到构造方法中

idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能arg - 将被注入到构造方法的一个普通结果 id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能result – 注入到字段或 JavaBean 属性的普通结果association – 一个复杂类型的关联;许多结果将包装成这种类型

嵌套结果映射 – 关联可以是 resultMap 元素,或是对其它结果映射的引用 collection – 一个复杂类型的集合

嵌套结果映射 – 集合可以是 resultMap 元素,或是对其它结果映射的引用 discriminator– 使用结果值来决定使用哪个 resultMap

case – 基于某些值的结果映射

嵌套结果映射 – case 也是一个结果映射,因此具有相同的结构和元素;或者引用其它的结果映射 一对一

案例: 查询用户所属部门

pojo
public 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部门实体类中,定义一个用户集合

//用户集合属性
List users;
dao
Dept findById(@Param("deptId") Integer deptId);
xml

    
    
    
    
        
        
        
    


多对多

多对多是一对多的特例,比如用户和角色

public class User{
    //1个用户多个角色
	List roles;
}
public class Role{
    //1个角色被多个用户使用
    List users;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5715921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存