MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理

简介: MyBatis 的关联关系配置 一对多,一对一,多对多 关系的映射处理

一.关联关系配置的好处

        MyBatis是一个Java持久化框架,可以通过XML或注解的方式将对象与数据库的关系进行映射。在MyBatis中,可以使用不同的方式配置关联关系,包括一对多、一对一和多对多关系。接上篇的MyBatis的教学

  1. 数据库表之间的关联关系:在关系型数据库中,不同表之间存在一对多、一对一、多对多等关联关系。通过在MyBatis中配置关联关系,可以方便地处理这些表之间的连接和查询操作,使数据的读取和写入更加简单和高效。
  2. 避免手动编写复杂SQL:使用MyBatis的关联关系配置,可以避免手动编写复杂的SQL语句来处理多个表之间的关联。通过简单的配置,MyBatis可以自动处理表之间的连接查询,简化了开发者的工作量。
  3. 对象关系映射:MyBatis是一个对象关系映射(ORM)框架,它可以将数据库中的表与Java对象之间进行映射。配置关联关系可以帮助开发者实现对象之间的关联,提供了更加面向对象的编程方式。
  4. 冗余数据减少:通过合理的关联关系配置,可以避免数据的冗余存储,减少数据库的存储空间占用。同时,在查询数据时,也可以通过关联关系一次性获取到所有相关的数据,提高查询效率。

总的来说,MyBatis的关联关系配置可以帮助开发者处理多表之间的关系,提供了更方便、高效和可维护的数据操作方式,减少了手动编写复杂SQL语句的工作量,同时也符合对象关系映射的思想。

二. 导入数据库表:

              在generatorConfig.xml配置文件中,配入多张表        


三.    一对多关系:--    一个订单对应多个订单项        

         使用嵌套查询(Nested Queries):在主对象的映射配置中使用标签来配置关联的多个子对象。可以通过select语句查询子对象,并通过resultMap将结果映射到主对象中。

       我们先在orderMapper.xml中写一个根据ID查询订单的方法

         创建一个orderVo

package com.zking.vo;
import com.zking.model.Order;
import com.zking.model.OrderItem;
import java.util.ArrayList;
import java.util.List;
/**
 * @author yinzi
 * @create 2023-08-26 14:14
 */
public class OrderVo extends Order {
    private List<OrderItem> orderItems=new ArrayList<>();
    public List<OrderItem> getOrderItems() {
        return orderItems;
    }
    public void setOrderItems(List<OrderItem> orderItems) {
        this.orderItems = orderItems;
    }
}

   建一个resultMap的映射

        接着,写biz层

package com.zking.biz;
import com.zking.mapper.OrderMapper;
import com.zking.vo.OrderVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * @author yinzi
 * @create 2023-08-26 14:31
 */
@Service //交给spring管理
public class OrderBizImpl implements OrderBiz {
    @Autowired
    private OrderMapper om;
    @Override
    public OrderVo selectbyOid(Integer oid) {
        return om.selectbyOid(oid);
    }
}

     最后测试结果

 


四.一对一关系:---一个订单项对应一个订单

       使用嵌套查询(Nested Queries):在主对象的映射配置中使用标签来配置关联的子对象。可以通过select语句查询子对象,并通过resultMap将结果映射到主对象中。

      一样,我先来配置一个查询的方法

        然后写biz层

package com.zking.biz;
import com.zking.mapper.OrderItemMapper;
import com.zking.model.OrderItem;
import com.zking.vo.OrderItemVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * @author yinzi
 * @create 2023-08-26 15:23
 */
@Service
public class OrderItemBizImpl implements OrderItemBiz {
    @Autowired
    private OrderItemMapper oim;
    @Override
    public OrderItemVo selectByOrderItemId(Integer oiid) {
        return oim.selectByOrderItemId(oiid);
    }
}

       最后测试:

 

五.多对多关系(两个一对多)

      使用嵌套查询(Nested Queries):在中间表的映射配置中使用标签来配置关联的多个子对象。可以通过select语句查询子对象,并通过resultMap将结果映射到中间表对象中。

       老套路,先配置一个查询的方法

        然后接着写biz层

package com.zking.biz;
import com.zking.mapper.HBookMapper;
import com.zking.vo.HBookVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
 * @author yinzi
 * @create 2023-08-26 16:08
 */
@Service
public class HBookBizImpl implements HBookBiz {
    @Autowired
    private HBookMapper hm;
    @Override
    public HBookVo selectByBookId(Integer bid) {
        return hm.selectByBookId(bid);
    }
}

最后测试结果:

今天的分享就到这啦!!

目录
打赏
0
0
0
0
3
分享
相关文章
微服务——MyBatis配置——事务管理
本段内容主要介绍了事务管理的两种类型:JDBC 和 MANAGED。JDBC 类型直接利用数据源连接管理事务,依赖提交和回滚机制;而 MANAGED 类型则由容器全程管理事务生命周期,例如 JEE 应用服务器上下文,默认会关闭连接,但可根据需要设置 `closeConnection` 属性为 false 阻止关闭行为。此外,提到在使用 Spring + MyBatis 时,无需额外配置事务管理器,因为 Spring 模块自带的功能可覆盖上述配置,且这两种事务管理器类型均无需设置属性。
43 0
微服务——MyBatis配置——多环境配置
在 MyBatis 中,多环境配置允许为不同数据库创建多个 SqlSessionFactory。通过传递环境参数给 SqlSessionFactoryBuilder,可指定使用哪种环境;若忽略,则加载默认环境。`environments` 元素定义环境配置,包括默认环境 ID、事务管理器和数据源类型等。每个环境需唯一标识,确保默认环境匹配其中之一。代码示例展示了如何构建工厂及配置 XML 结构。
36 0
微服务——MyBatis配置——常见配置
本文介绍了 MyBatis 的常见配置及其加载顺序。属性配置优先级为:方法参数传递的属性 &gt; resource/url 属性中配置 &gt; properties 元素中指定属性。同时列举了多个关键配置项,如 `cacheEnabled`(全局缓存开关)、`lazyLoadingEnabled`(延迟加载)、`useGeneratedKeys`(使用 JDBC 自动生成主键)等,并详细说明其作用、有效值及默认值。这些配置帮助开发者优化 MyBatis 的性能与行为。
33 0
|
1月前
|
七、MyBatis自定义映射resultMap
七、MyBatis自定义映射resultMap
67 6
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——MyBatis 介绍和配置
本文介绍了Spring Boot集成MyBatis的方法,重点讲解基于注解的方式。首先简述MyBatis作为持久层框架的特点,接着说明集成时的依赖导入,包括`mybatis-spring-boot-starter`和MySQL连接器。随后详细展示了`properties.yml`配置文件的内容,涵盖数据库连接、驼峰命名规范及Mapper文件路径等关键设置,帮助开发者快速上手Spring Boot与MyBatis的整合开发。
114 0
MyBatis篇-常见配置
本文介绍了 MyBatis 的常见配置及事务管理相关内容。首先概述了 MyBatis 属性加载顺序,方法参数属性优先级最高。接着列举了几个常见配置属性,如 cacheEnabled、lazyLoadingEnabled 等,并说明其作用与默认值。在多环境配置部分,讲解如何通过 SqlSessionFactoryBuilder 指定环境,以及 environments 元素的配置细节。最后讨论了两种事务管理模式:JDBC 和 MANAGED,分别适用于不同场景,并指出在使用 Spring 模块时无需额外配置事务管理器。
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
43 0
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
154 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
285 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。