Mybatis:复杂的结果集映射关系

9.复杂的结果集映射关系

在我们的结果集关系映射中分类两类:

  • 多对一映射关系:多个学生可以有同一个老师,即多个学生对应一个老师

    在Pojo层面,我们一个javabean中的属性,该属性的类型为javabean。

    • 问题:当Mybatis将字段与属性进行映射时,就无法将一些属性映射到该属性中,
    • 我们可以通过关联的方式进行映射,association标签
  • 一对多映射关系:一个老师可以有多个学生,即一个老师对应多个学生

    在Pojo层面,我们一个javabean的属性为一个集合。

    • 问题:Mybatis无法将字段映射到该集合中。
    • 我们可以通过集合的方式进行映射,collection标签

上面两种映射关系,即标签的使用,我们将在下面进行举例。

9.1多对一映射

关联映射关系:Student 关联Teacher类,即Student类中有Teacher类型的属性。

Student类

public class Student {
   
    private Integer id;
    private String name;
    private Teacher teacher;

    public Student(Integer id, String name, Teacher teacher) {
   
        this.id = id;
        this.name = name;
        this.teacher = teacher;
    }

    public Student() {
   
    }

    public Integer getId() {
   
        return id;
    }

    public void setId(Integer id) {
   
        this.id = id;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public Teacher getTeacher() {
   
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
   
        this.teacher = teacher;
    }

    @Override
    public String toString() {
   
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", teacher=" + teacher +
                '}';
    }
}

Teacher类

public class Teacher {
   
    private Integer id;
    private String name;

    public Integer getId() {
   
        return id;
    }

    public void setId(Integer id) {
   
        this.id = id;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public Teacher() {
   
    }

    public Teacher(Integer id, String name) {
   
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis提供了多种方式来处理复杂的结果映射。以下是一些常见的技术和方法: 1. 嵌套查询(Nested Queries:可以使用嵌套来处理一对一、一对多和多对多的关联关系。通过定义嵌套的resultMap,可以将结果映射到包含嵌套对象的复杂数据结构中。 2. 关联查询(Association):通过使用association标签,可以将关联对象映射到主对象中。这适用于一对一和多对一的关联关系。 3. 合查询(Collection):通过使用collection标签,可以将合对象映射到主对象中。这适用于一对多和多对多的关联关系。 4. resultMap继承(ResultMap Inheritance):可以通过定义一个基础的resultMap,并在子resultMap中使用继承关系来重用已定义的映射规则。这样可以减少重复的配置。 5. 枚举类型映射(Enum Mapping):如果结果中包含枚举类型的字段,可以使用类型处理器或者自定义的类型处理器来将其映射为对应的Java枚举类型。 6. 自定义映射器(Custom Mappers):如果默认的映射方式无法满足需求,可以通过自定义映射器来实现复杂的结果映射。自定义映射器可以通过实现ResultMapResolver接口来定义自己的映射规则。 这些只是一些常见的技术和方法,MyBatis在结果映射方面提供了很多灵活的功能和选项,可以根据具体的需求选择适合的方式来处理复杂的结果映射

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值