码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • mybatis04关联关系映射


    目录

    1、什么是关联关系?

    2、关联关系的分类

            2.1一个人负责多个项目开发,例如:张三负责 A B C 

            2.2一对多:一本书对应多种书本类型,例如:西游记 -> 神话、古典、名著

            2.3多对一:多本书指向一种书本类型,例如:西游记、山海经、聊斋志异 -> 神话

            2.4多对多:永远视为两个一对多   

    3.将数据表导入数据库中

    4、通过 mybatis-generator 插件生成dao、mapper、model

            4.1配置mybatis-generator插件生成文件位位置

            4.2修改generatorConfig.xml配置文件的生成目录(mapper和model)及对应生成关系

    5、修改Customer、Order实体类

            5.1实现序列化接口

            5.2建立实体映射关联关系(一对多、多对一)

    6、配置 mybatis 关联映射

    注意事项,使用左外连接而非内连接!!!

    下面是刚写的代码,我就不都放上来了

    OrderMapper.java

    下面是运行效果:

    无@Data注解运行效果

     有@Data注解运行效果

    感谢大家的支持,后续会给大家带来SpringMVC!!!


    1、什么是关联关系?

    关联关系是指类之间的引用关系,如果类A与类B关联,那么类A将被定义成类B的属性。

    1. 例如:
    2. public class A{
    3. private String name;
    4. }
    5. public class B{
    6. private String sid;
    7. private Float score;
    8. private Address address;
    9. }

    2、关联关系的分类

    一对一,一对多,多对一,多对多

            2.1一个人负责多个项目开发,例如:张三负责 A B C 

            2.2一对多:一本书对应多种书本类型,例如:西游记 -> 神话、古典、名著

            2.3多对一:多本书指向一种书本类型,例如:西游记、山海经、聊斋志异 -> 神话

            2.4多对多:永远视为两个一对多   

    3.将数据表导入数据库中

    1. -- 一对多
    2. -- 客户表(主表)
    3. create table t_customer
    4. (
    5. customer_id int primary key not null auto_increment,
    6. customer_name varchar(50) not null
    7. );
    8. -- 多对一
    9. -- 订单表(从表)
    10. create table t_order
    11. (
    12. order_id int primary key not null auto_increment,
    13. order_no varchar(50) not null unique,
    14. cid int not null,
    15. foreign key(cid) references t_customer(customer_id)
    16. );

    4、通过 mybatis-generator 插件生成dao、mapper、model

            4.1配置mybatis-generator插件生成文件位位置

            4.2修改generatorConfig.xml配置文件的生成目录(mapper和model)及对应生成关系

    5、修改Customer、Order实体类

            5.1实现序列化接口

            5.2建立实体映射关联关系(一对多、多对一)

    1. #一对多:一个客户对应多个订单
    2. private List orders=new ArrayList();
    3. #多对一:多个订单对应一个客户(一个订单对应一个客户)
    4. private Customer customer;

    6、配置 mybatis 关联映射

            6.1 一对多

    1. <resultMap id="one2many" type="Customer">
    2. <id column="customer_id" property="customerId"/>
    3. <result column="customer_name" property="customerName"/>
    4. <collection property="orders" ofType="Order">
    5. <id column="order_id" property="orderId"/>
    6. <result column="order_no" property="orderNo"/>
    7. collection>
    8. resultMap>

    注意事项,使用左外连接而非内连接!!!

            6.2 多对一

    1. <resultMap id="many2one" type="Order">
    2. <id column="order_id" property="orderId"/>
    3. <result column="order_no" property="orderNo"/>
    4. <result column="cid" property="cid"/>
    5. <association property="customer" javaType="Customer">
    6. <id column="customer_id" property="customerId"/>
    7. <result column="customer_name" property="customerName"/>
    8. association>
    9. resultMap>

    下面是刚写的代码,我就不都放上来了

    OrderMapper.java

    1. package com.xnx.ssm.mapper;
    2. import com.xnx.ssm.model.Order;
    3. import com.xnx.ssm.model.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. OrderVo queryOrderVoByOrderId(@Param("orderId") Integer orderId);
    11. int updateByPrimaryKeySelective(Order record);
    12. int updateByPrimaryKey(Order record);
    13. }

    下面是运行效果:

    无@Data注解运行效果

     有@Data注解运行效果

    感谢大家的支持,后续会给大家带来SpringMVC!!!

  • 相关阅读:
    电气元器件——变频器、自锁开关、电磁继电器、温度检测
    华为OD机试真题-计算误码率-2023年OD统一考试(B卷)
    虚拟机的IP地址自动变为127.0.0.1
    数字逻辑设计(2)
    Pytorch笔记之分类
    新年学新语言Go之一
    【TA】Unity角色二次元风格渲染
    native smart contracts, a easy forgotten thing.
    海外版知乎Quora,如何使用Quora进行营销?
    多级缓存入门
  • 原文地址:https://blog.csdn.net/m0_62246061/article/details/126803634
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号