Mybatis对象关联数据库表【对多关联AND对一关联】

news2024/12/23 1:34:02

一对多分成两部分:对一对多

1. 准备两张表oder、customer 

2. 对多关联实现

对多关联:Customer类下创建一个List集合OrderBean类

public class Customer {

    private Integer id;
    private String name;

    //对多关联
    private List<OrderBean> orderBeanList;

    public Customer() {
    }

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

数据库语句采用LEFT JOIN。。。ON。。。来实现关联

补充: left join:左链接,以左表为参照,显示所有数据,右表中没有则以null显示。

            通俗讲 left 以 left join 左侧的表为主表

 对多关联: <collection property="orderBeanList" ofType="OrderBean">

    <select id="getCustomerWithOrderBeanList" resultMap="CustomerResultMap">
        SELECT t1.*, t2.id AS order_id, t2.orderMoney, t2.customerId
        FROM customer t1
                 LEFT JOIN `order` t2 ON t1.id = t2.customerId
        WHERE t1.id = #{value};
    </select>
    <resultMap id="CustomerResultMap" type="Customer">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <!-- 对多关联 -->
        <collection property="orderBeanList" ofType="OrderBean">
            <id property="id" column="order_id"/>
            <result property="orderMoney" column="orderMoney"/>
        </collection>
    </resultMap>

3. 对一关联实现

对一关联: OrderBean 类下创建一个Customer类

public class OrderBean {
    private Integer id;
    private Integer orderMoney;

    //对一关联
    private Customer customer;

    public OrderBean() {
    }

    @Override
    public String toString() {
        return "OrderBean{" +
                "id=" + id +
                ", orderMoney=" + orderMoney +
                ", customer=" + customer +
                '}';
    }
}

数据库语句采用INNER JOIN。。。ON。。。来实现关联

补充:inner join:内连接,显示两个表中有联系的所有数据。

            通俗讲 查找的数据是左右两张表共有的。

  对一关联: <association property="customer" javaType="Customer">

    <select id="getOrderBeanWithCustomer" resultMap="OrderBeanResultMap">
        SELECT t1.*, t2.name
        FROM `order` t1
                 INNER JOIN customer t2 ON t1.customerId = t2.id
        WHERE t1.id = #{value};
    </select>
    <resultMap id="OrderBeanResultMap" type="OrderBean">
        <id property="id" column="id"/>
        <result property="orderMoney" column="orderMoney"/>
        <!-- 对一关联 -->
        <association property="customer" javaType="Customer">
            <id property="id" column="customerId"/>
            <result property="name" column="name"/>
        </association>
    </resultMap>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

结构型设计模式 Structural Patterns :适配器 Adapter(Python 实现)

文章大纲 python 代码实现实现1实现2实现3解决实际问题的例子参考文献与学习路径使用示例: 适配器模式在 Python 代码中很常见。 基于一些遗留代码的系统常常会使用该模式。 在这种情况下, 适配器让遗留代码与现代的类得以相互合作。 识别方法: 适配器可以通过以不同抽象或…

visual studio2019 定位内存泄漏的方法

1、首先下载一个好用的工具&#xff0c;哈哈&#xff0c;链接在下方https://kinddragon.github.io/vld/下载完后&#xff0c;进行安装&#xff0c;安装完后&#xff0c;文件夹如下所示&#xff1a;2、下面就是打开visual studio进行配置&#xff0c;将include配置好&#xff0c…

关于MAC zsh: command not found: bee 处理方案

最近在玩GO语言&#xff0c;接触到GoBee 这个框架&#xff0c;安装完成后检查beego版本时发现了这个错误“zsh: command not found: bee”。 原因:GO环境配置出问题。 此博文跳过GO的安装过程&#xff0c;直接进入正题。前提是&#xff1a;已经装好了GO。MAC 环境&#xff0c…

六氟磷酸锂洗桶废水除氟树脂吸附工艺

在六氟磷酸锂过程中&#xff0c;主要排放合成氟化锂生产废水和产品六氟磷酸锂桶清洗废水&#xff0c;主要含有氟、磷酸盐及锂&#xff0c;这是一种高氟、高浓度磷酸盐无机化工废水。 针对这类高氟、高浓度磷酸盐无机化工废水&#xff0c;常用于这类生产废水的处理技术有化学沉淀…

力扣刷题|513.找树左下角的值、112. 路径总和、113.路径总和 ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

文章表一LeetCode 513.找树左下角的值题目链接&#x1f517;思路LeetCode 112. 路径总和题目链接&#x1f517;思路LeetCode 113.路径总和 ii题目链接&#x1f517;思路LeetCode 106.从中序与后序遍历序列构造二叉树题目链接&#x1f517;思路LeetCode 105.从前序与中序遍历序列…

Java-基础-5.多线程

一&#xff1a;为什么出现多线程&#xff1f; 1. 线程是指&#xff0c;一段代码的运行&#xff08;cpu&#xff0c;代码&#xff0c;数据&#xff09;。但是&#xff0c;生产中&#xff0c;我们真实情况&#xff0c;数据都是并发传送的&#xff0c;所以&#xff0c;我们仅仅使用…

城市交通应急广播系统方案

恒星科通发布于2023-2-2 一、城市交通指挥与疏导广播系统概述 城市交通指挥与疏导广播即“GSM 无线智能广播”&#xff0c;是利用 GSM 无线接入设备与扩音广播系统组合形成的一款 GSM 无线智能广播系统&#xff0c;该系统用在交通指挥与疏导等智能交通项目有不可替代的优势。系…

C语言之深入解析如何理解指针和结构体指针、指针函数、函数指针

一、指针变量 首先要明白指针就是一个变量&#xff0c;可以使用如下代码来验证&#xff1a; #include "stdio.h"int main(int argc, char **argv) {unsigned int a 10;unsigned int *p NULL;p &a;printf("&a %d\n",a);printf("&a …

Docker如何连接至本地私服Harbor中 推送镜像、查看镜像、下载镜像

1.基础环境 win/mac/linux装有Docker私服 Harbor Docker Docker中文站 Docker官方站 下载并安装Docker Harbor Harbor GitHub Harbor 官方地址 下载并安装 Harbor (测试的话 推荐用Docker镜像来启动Harbor 减少环境问题) 2.配置流程 登录Harbor 启动后 访问 Harbor 的…

状态空间模型与卡尔曼滤波

1.状态空间模型 状态空间模型 (State Space Model)&#xff0c;包括两个方程模型&#xff1a; 一是状态方程模型&#xff0c;反映动态系统在输入变量作用下在某时刻所转移到的状态&#xff1b; 二是输出或测量方程模型&#xff0c;它将系统在某时刻的输出和系统的状态及输入变…

1.Echarts的简单使用

目录 1 下载echarts.min.js 2 使用示例 3 其他参数 Echarts是做前端数据可视化的&#xff0c;数据可视化是将数据做成图表&#xff0c;常见的可视化库有D3.js&#xff0c;ECharts.js,Highchart.js,AntV等 ECharts官网地址 Apache ECharts 进入后点击所有示例 示例中有各…

【MySQL】《狂飙》电视剧火了,如果程序一直狂飙,扛不住了,怎么办呢?

程序如果狂飙了怎么办呢&#xff1f;《狂飙》电视剧你看了吗&#xff1f;程序“狂飙”&#xff0c;你担心吗&#xff1f;性能优化步骤适合创建索引的情况不适合创建索引的情况Explain 性能分析id说明select_type 说明type字段说明Extra说明一下《狂飙》电视剧你看了吗&#xff…

PMI开通便捷的人民币付款

人民币付款通道正式开通啦当PMI持证人士通过PMI全球英文网站(www.pmi.org )进行证书更新缴费时&#xff0c;在原有美金支付的基础上&#xff0c;开通了新的人民币付款通道&#xff0c;包含支付宝和多种信用卡支付方式&#xff0c;持证人士可以按需选择<美金USD>或<人民…

基于梯度下降神经网络训练整体流程

文章目录基于梯度下降神经网络训练整体流程梯度下降优化算法一、简介二、梯度下降方法2.1 批量梯度下降法BGD2.2 随机梯度下降法SGD三、传统梯度下降法面临的挑战四、优化器4.1 Momentum4.2 Adagrad4.3 Adam4.4 对比与选择过拟合、拟合和欠拟合一、防止过拟合方法1.1 早停基于梯…

FFMPEG Vcl Player 7.0 For Delphi Crack

FFMPEG Vcl Player For Delphi 7.0【www_flashavconverter_com】是一个基于 directshow 和 ffmpeg 的 vcl 播放器&#xff0c;用于解码和播放视频/音频。 新增&#xff1a;升级到最新的FFMPEG Runtime(5.1.x)并支持Delphi 11.2 支持 Dash 回放 支持播放AES加密网络流 Nvidia 卡…

一文搞懂MD5、SHA-1、SHA-2、SHA-3,哪个算法比较安全

MD5、SHA-1、SHA-2、SHA-3都是比较常见的单向散列函数&#xff0c;这几种单向散列函数都有自己的特性。下面&#xff0c;给大家介绍一下它们的区别&#xff0c;以及MD5、SHA-1、SHA-2、SHA-3的安全性如何&#xff0c;哪种算法比较安全&#xff1f;一、简介单向散列函数是指对不…

JavaWeb:过滤器与监听器

一、过滤器Filter 1.1 过滤器Filter概述 Filter表示过滤器&#xff0c;是JavaWeb三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一。Servlet我们之前都已经介绍过了&#xff0c;Filter和Listener我们今天都会进行介绍。 过滤器可以把对资源的请求 拦截 下来&…

Python的判断语句

进行逻辑判断&#xff0c;是生活中常见的行为。 同样&#xff0c;在程序中&#xff0c;进行逻辑判断也是最为基础的功能。 布尔类型和比较运算符 布尔类型的字面量&#xff1a; true 表示真&#xff08;是、肯定&#xff09;false 表示假&#xff08;否、否定&#xff09; …

【tkinter】用不到50行Python代码,写一个扫雷小游戏

文章目录定制按钮生成雷区主流程基础知识&#xff1a;StringVartkinter布局 定制按钮 学会了布局和绑定事件&#xff0c;就可以开发一些简单的应用&#xff0c;比如扫雷小游戏。从外观来看&#xff0c;扫雷就是一个按钮矩阵&#xff0c;左键点击按钮&#xff0c;如果按钮里埋…

myBaits Target Capture Kits;myBaits 靶向捕获试剂盒,快速捕获富集目标序列

myBaits Target Capture Kits可以快速捕获富集目标序列&#xff0c;提高NGS研究效率&#xff0c;兼容Illumina&#xff0c;PacBio 和 Nanopore等多种测序平台。Arbor Biosciences使用oligo合成专利技术&#xff0c;为您提供高质量、高性价比的捕获试剂盒。适用于各种基因组类型…