• Mybatis的关联关系配置一对一,一对多,多对多的映射关系


    目录

    关联关系映射

    一对一关联:

    一对多关联:

    多对多关联:

    导入数据库表

     一对多

    一对一 

     多对多


    关联关系映射

    关联关系映射在Mybatis中主要通过三种方式实现:一对一关联和一对多关联及多对多关联

    一对一关联:

    在一对一关联中,两个表之间存在一对一的关系,例如学生表和身份证表,一个学生只有一个身份证,而一个身份证也只属于一个学生。在Mybatis中,可以通过在实体类中定义关联属性,然后在映射文件中使用标签来定义关联关系。通过配置映射关系,可以查询到学生表和身份证表的数据,并将其映射到对应的实体类中。

    一对多关联:

    在一对多关联中,两个表之间存在一对多的关系,例如部门表和员工表,一个部门可以有多个员工,而一个员工只属于一个部门。在Mybatis中,可以通过在实体类中定义关联属性,然后在映射文件中使用标签来定义关联关系。通过配置映射关系,可以查询到部门表和员工表的数据,并将其映射到对应的实体类中。

    多对多关联:

    是指两个表之间存在多对多的关联关系,即一个表的一条记录可以对应另一个表的多条记录,反之亦然。在数据库中,多对多关系通常需要通过中间表来实现。

    在Mybatis中,可以通过定义中间表来映射多对多关系。假设有两个表,学生表和课程表,一个学生可以选择多门课程,而一门课程也可以被多个学生选择。为了映射这种多对多关系,需要创建一个中间表,例如选课表,用来记录学生和课程的关联关系。
     

    导入数据库表

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

     一对多

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

    创建一个 OrderVo

    1. package com.xiaoxu.Vo;
    2. import com.xiaoxu.model.Order;
    3. import com.xiaoxu.model.OrderItem;
    4. import java.util.ArrayList;
    5. import java.util.List;
    6. /**
    7. * @author小徐
    8. * @site www.veryedu.cn
    9. * @company xu集团
    10. * @create 2023-08-26 14:21
    11. */
    12. public class OrderVo extends Order {
    13. private List orderItems = new ArrayList();
    14. public List getOrderItems() {
    15. return orderItems;
    16. }
    17. public void setOrderItems(List orderItems) {
    18. this.orderItems = orderItems;
    19. }
    20. }

     建立一个resultMap映射

    接着写biz层

    1. package com.xiaoxu.impl;
    2. import com.xiaoxu.Vo.OrderVo;
    3. import com.xiaoxu.biz.OrderBiz;
    4. import com.xiaoxu.mapper.OrderMapper;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Service;
    7. /**
    8. * @author小徐
    9. * @site www.veryedu.cn
    10. * @company xu集团
    11. * @create 2023-08-26 14:34
    12. */
    13. @Service
    14. public class OrderBizImpl implements OrderBiz {
    15. @Autowired
    16. private OrderMapper orderMapper;
    17. @Override
    18. public OrderVo selectByOid(Integer oid) {
    19. return orderMapper.selectByOid(oid);
    20. }
    21. }

    一对一 

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

    和之前一样,首先配置一个查询方法

     biz层

    1. package com.xiaoxu.impl;
    2. import com.xiaoxu.Vo.OrderVo;
    3. import com.xiaoxu.biz.OrderBiz;
    4. import com.xiaoxu.mapper.OrderMapper;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Service;
    7. /**
    8. * @author小徐
    9. * @site www.veryedu.cn
    10. * @company xu集团
    11. * @create 2023-08-26 14:34
    12. */
    13. @Service
    14. public class OrderBizImpl implements OrderBiz {
    15. @Autowired
    16. private OrderMapper orderMapper;
    17. @Override
    18. public OrderVo selectByOid(Integer oid) {
    19. return orderMapper.selectByOid(oid);
    20. }
    21. }

     多对多

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

    还是一样先配置一个查询方法

    biz层

    1. package com.xiaoxu.impl;
    2. import com.xiaoxu.Vo.HbookVo;
    3. import com.xiaoxu.biz.HBookBiz;
    4. import com.xiaoxu.mapper.HBookMapper;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Service;
    7. /**
    8. * @author小徐
    9. * @site www.veryedu.cn
    10. * @company xu集团
    11. * @create 2023-08-26 16:39
    12. */
    13. @Service
    14. public class HBookBizImpl implements HBookBiz {
    15. @Autowired
    16. private HBookMapper hBookMapper;
    17. @Override
    18. public HbookVo selectByBookId(Integer bid) {
    19. return hBookMapper.selectByBookId(bid);
    20. }
    21. }

  • 相关阅读:
    数据库的范式
    解密Prompt系列21. LLM Agent之再谈RAG的召回信息密度和质量
    SpringbootWeb快速入门
    打造高效互联网医院系统源码:解读其核心功能及应用
    组织机器学习代码
    pytorch里常用操作(持续更新)
    Leetcode双指针刷题(一)
    数学建模——差分方程结论介绍
    抗击疫情静态HTML网页作业作品 大学生抗疫感动专题页设计制作成品 简单DIV CSS布局网站
    数据质量问题根源剖析
  • 原文地址:https://blog.csdn.net/m0_74934282/article/details/132663073