• Mybatis--关联关系映射


    目录: 

    1.什么是关联关系映射:

    一对一和多对多的区别

    2.mybaits中的一对一&一对多关联关系配置

    配置generatoeConfig文件

    插件自动生成

    ​编辑 

     写sql语句

    创建 Ordermapper类

    编写接口类

    ​编辑 编写接口实现类

    编写测试类

     测试结果

    一对一

    ​编辑 测试结果:

    3.mybatis中的多对多的关联关系配置

    创建 HBookVo 

    编写Sql

    定义HBookMapper 接口

    编写HBookBiz 接口

    HBookBizImpl 接口实现类

    编写测试类

    测试结果 


    1.什么是关联关系映射:

    MyBatis是一个Java持久化框架,它提供了一种将数据库表与Java对象之间的关联关系进行映射的方式。关联关系映射是指将数据库表中的列与Java对象中的属性进行对应,以实现数据的读取和写入。通过MyBatis的关联关系映射,可以方便地进行数据库操作,包括查询、插入、更新和删除等操作。

    一对一和多对多的区别

    一对一和多对多是数据库中常见的关联关系类型。

    一对一关系是指两个实体之间存在唯一的对应关系。在数据库中,可以通过在两个表之间共享相同的主键或外键来建立一对一关系。例如,一个人只能有一个身份证号码,而一个身份证号码也只能对应一个人。

    多对多关系是指两个实体之间存在多个对应关系。在数据库中,可以通过引入第三个关联表来实现多对多关系。例如,一个学生可以选择多门课程,而一门课程也可以被多个学生选择。

    总结来说,一对一关系是一种唯一的对应关系,而多对多关系是一种多个对应关系。

    2.mybaits中的一对一&一对多关联关系配置

    配置generatoeConfig文件
    1. "1.0" encoding="UTF-8" ?>
    2. "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    3. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
    4. "jdbc.properties"/>
    5. "C:\\temp2\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar"/>
    6. "infoGuardian">
    7. "suppressAllComments" value="true"/>
    8. "suppressDate" value="true"/>
    9. "${jdbc.driver}"
    10. connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
    11. "forceBigDecimals" value="false"/>
    12. "com.zking.model"
    13. targetProject="src/main/java">
    14. "enableSubPackages" value="false"/>
    15. "constructorBased" value="true"/>
    16. "trimStrings" value="false"/>
    17. "immutable" value="false"/>
    18. "com.zking.mapper"
    19. targetProject="src/main/java">
    20. "enableSubPackages" value="false"/>
    21. "com.zking.mapper"
    22. targetProject="src/main/java" type="XMLMAPPER">
    23. "enableSubPackages" value="false"/>
    24. "" tableName="t_hibernate_book" domainObjectName="HBook"
    25. enableCountByExample="false" enableDeleteByExample="false"
    26. enableSelectByExample="false" enableUpdateByExample="false">
    27. "" tableName="t_hibernate_book_category" domainObjectName="HBookCategory"
    28. enableCountByExample="false" enableDeleteByExample="false"
    29. enableSelectByExample="false" enableUpdateByExample="false">
    30. "" tableName="t_hibernate_category" domainObjectName="HCategory"
    31. enableCountByExample="false" enableDeleteByExample="false"
    32. enableSelectByExample="false" enableUpdateByExample="false">
    33. "" tableName="t_hibernate_order" domainObjectName="Order"
    34. enableCountByExample="false" enableDeleteByExample="false"
    35. enableSelectByExample="false" enableUpdateByExample="false">
    36. "" tableName="t_hibernate_order_item" domainObjectName="OrderItem"
    37. enableCountByExample="false" enableDeleteByExample="false"
    38. enableSelectByExample="false" enableUpdateByExample="false">
    插件自动生成
     
     写sql语句

    创建 Ordermapper类
    1. package com.zking.mapper;
    2. import com.zking.model.Order;
    3. import com.zking.vo.OrderVo;
    4. import org.apache.ibatis.annotations.Param;
    5. public interface OrderMapper {
    6. int deleteByPrimaryKey(Integer orderId);
    7. int insert(Order record);
    8. int insertSelective(Order record);
    9. Order selectByPrimaryKey(Integer orderId);
    10. int updateByPrimaryKeySelective(Order record);
    11. int updateByPrimaryKey(Order record);
    12. OrderVo selectbyoid(@Param("oid") Integer oid);
    13. }
    编写接口类
     编写接口实现类

    编写测试类
    1. package com.zking.biz.impl;
    2. import com.zking.biz.OrderBiz;
    3. import com.zking.biz.OrderItemBiz;
    4. import com.zking.vo.OrderItemVo;
    5. import com.zking.vo.OrderVo;
    6. import org.junit.Test;
    7. import org.junit.runner.RunWith;
    8. import org.springframework.beans.factory.annotation.Autowired;
    9. import org.springframework.test.context.ContextConfiguration;
    10. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    11. import static org.junit.Assert.*;
    12. /**
    13. * @author bing人
    14. * @site
    15. * @company xy集团
    16. * @create 2023-09-04 9:46
    17. */
    18. //自动加载上下文
    19. @RunWith(SpringJUnit4ClassRunner.class)
    20. @ContextConfiguration(locations={"classpath:spring-context.xml"})
    21. public class OrderBizImplTest {
    22. @Autowired
    23. private OrderBiz orderBiz;
    24. @Autowired
    25. private OrderItemBiz orderItemBiz;
    26. @Test
    27. public void selectbyoid() {
    28. //更便于维护
    29. OrderVo orderVo = orderBiz.selectbyoid(8);
    30. System.out.println(orderVo);
    31. orderVo.getOrderItems().forEach(System.out::println);
    32. }
    33. @Test
    34. public void selectByOrderItemId() {
    35. OrderItemVo orderItemVo= orderItemBiz.selectByOrderItemId(27);
    36. System.out.println(orderItemVo);
    37. // System.out.println(orderItemVo.getOrder());
    38. }
    39. }
     测试结果

    一对一
     测试结果:

    3.mybatis中的多对多的关联关系配置

    创建 HBookVo 
    1. package com.zking.vo;
    2. import com.zking.model.BookCategory;
    3. import com.zking.model.HBook;
    4. import lombok.Data;
    5. import java.util.List;
    6. /**
    7. * @author xy集团
    8. * @site blog.csdn.net/Justw320
    9. * @create 2023-0904 11:03
    10. */
    11. @Data
    12. public class HBookVo extends HBook {
    13. private List bookc = new ArrayList<>();
    14. }
    编写Sql
    1. "HBookVoMap" type="com.ycxw.vo.HBookVo" >
    2. "book_id" property="bookId">
    3. "book_name" property="bookName">
    4. "price" property="price">
    5. "bookc" ofType="com.ycxw.model.Category">
    6. "category_id" property="categoryId">
    7. "category_name" property="categoryName">
    定义HBookMapper 接口
    HBookVo selectByBookId(@Param("bid") Integer bid);

     

    编写HBookBiz 接口
    1. package com.zking.biz;
    2.  
    3. import com.zking.vo.HBookVo;
    4.  
    5. /**
    6.  * @author xy集团
    7.  * @site blog.csdn.net/Justw320
    8.  * @create 2023-09-04 11:12
    9.  */
    10. public interface HBookBiz {
    11.     HBookVo selectByBookId(Integer bid);
    12. }
    HBookBizImpl 接口实现类
    1. package com.ycxw.biz.impl;
    2. import com.ycxw.biz.HBookBiz;
    3. import com.ycxw.mapper.HBookMapper;
    4. import com.ycxw.vo.HBookVo;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.stereotype.Service;
    7. /**
    8. * @author xy集团
    9. * @site blog.csdn.net/Justw320
    10. * @create 2023-0904 11:18
    11. */
    12. @Service
    13. public class HBookBizImpl implements HBookBiz {
    14. @Autowired
    15. private HBookMapper hBookMapper;
    16. @Override
    17. public HBookVo selectByBookId(Integer bid) {
    18. return hBookMapper.selectByBookId(bid);
    19. }
    20. }
    编写测试类
    1. package com.zking.biz.impl;
    2. import com.zking.biz.HBookBiz;
    3. import com.zking.vo.HBookVo;
    4. import org.junit.Test;
    5. import org.junit.runner.RunWith;
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.test.context.ContextConfiguration;
    8. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    9. /**
    10. * @author xy集团
    11. * @site blog.csdn.net/Justw320
    12. * @create 2023-09-04 11:22
    13. */
    14. @RunWith(SpringJUnit4ClassRunner.class)
    15. @ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
    16. public class OrderBizImplTest {
    17. @Autowired
    18. private HBookBiz hBookBiz;
    19. @Test
    20. public void selectByBookId(){
    21. HBookVo hBookVo = hBookBiz.selectByBookId(66);
    22. System.out.println(hBookVo);
    23. System.out.println(hBookVo.getBookc());
    24. }
    25. }
    测试结果 

  • 相关阅读:
    鸿蒙NEXT开发实战:【网络管理-数据请求】
    Spring和SpringBoot比较,解惑区别
    22年PMP考试内容大改,敏捷项目管理全套资料,不看过不了!
    软件自动化测试代码覆盖率
    pathon模拟计算器
    R绘制箱线图
    给自己改改代码(python)(记录)
    k8s Helm安装EFK
    spring initializr脚手架搭建详解
    typeinfo类型支持库学习
  • 原文地址:https://blog.csdn.net/2201_75455485/article/details/132661300