MyBatis 表与表之间的关系 1对多的情况

Mybatis的多表连接操作,一对一、一对多、多对多 大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!00705672)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! 阅读详情

1.一对多的情况。在多的实体对象里会出现一的实体对象的属性:

帖子分类          帖子

(1)            (n)

实现的原理:不改变原有的实体类。加入实体与实体之间的映射结果。

实现的步骤:

1) 在帖子类里创建用户类的实体对象和分类实体对象,代码如下:

package com.model;
//帖子
public class Theme {
private String themeId;//帖子编号
private String themeName;//帖子名称
private String themeContent;//帖子内容
private Integer UserId;//用户编号
private String themeTime;//发帖时间
private Integer sortId;//分类编号
private UserInfo themeUserInfo;//表示的是所对应的用户的实体对象
private Sort themeSort;

public Sort getThemeSort() {
return themeSort;
}
public void setThemeSort(Sort themeSort) {
this.themeSort = themeSort;
}
public UserInfo getThemeUserInfo() {
return themeUserInfo;
}
public void setThemeUserInfo(UserInfo themeUserInfo) {
this.themeUserInfo = themeUserInfo;
}
public Integer getSortId() {
return sortId;
}
public void setSortId(Integer sortId) {
this.sortId = sortId;
}
public String getThemeId() {
return themeId;
}
public void setThemeId(String themeId) {
this.themeId = themeId;
}
public String getThemeName() {
return themeName;
}
public void setThemeName(String themeName) {
this.themeName = themeName;
}
public String getThemeContent() {
return themeContent;
}
public void setThemeContent(String themeContent) {
this.themeContent = themeContent;
}
public String getThemeTime() {
return themeTime;
}
public void setThemeTime(String themeTime) {
this.themeTime = themeTime;
}
public Integer getUserId() {
return UserId;
}
public void setUserId(Integer userId) {
UserId = userId;
}


}


2)创建一个Mapper的映射文件。ThemeMapper.xml.

  该文件里除了相对应的多表查询的SQL语句之外,还具有结果集的映射配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.imp.ThemeMapper">
 <select id="getModel" resultType="java.lang.String" resultMap="ThemeResult">
    select *
    from Theme t inner join userInfo u on t.userId=u.userId
    inner join sort s on t.sortId=s.sortId
    where t.themeId=#{id}
  </select>
  <resultMap type="com.model.Theme" id="ThemeResult">
      <result column="themeId" property="themeId"></result>
      <result column="themeName" property="themeName"></result>
      <result column="themeContent" property="themeContent"></result>
      <result column="userId" property="userId"></result>
      <result column="themeTime" property="themeTime"></result>
      <result column="sortId" property="sortId"></result>
      <association property="themeUserInfo" javaType="com.model.UserInfo" foreignColumn="userId">
      <id column="userId" property="userId"></id>
      <result column="userName" property="userName"></result>
      </association>
      <association property="themeSort" javaType="com.model.Sort" foreignColumn="sortId">
      <id column="sortId" property="sortId"></id>
      <result column="sortName" property="sortName"></result>
      </association>
  </resultMap>
  
</mapper>

其中:resultMap这个节点作为结果集的配置节点。其中的id属性就是它的引用Id(其它地方引用它的时候,是通过这个id名来引用的)。

<result>节点就是对应到数据库里的表的列名和实体对象的字段。

比如:<result column="titleName" property="titleName"></result> 

column:数据库的列名

property:类的字段名

association节点表示关联的实体对象。



Android以太网开关流程分析 Android以太网开关流程分析 一、引言   在Android 以太网服务启动流程中我们启动了EthernetService(ES),NetworkManagementService(NMS)等服务,其中ES作为Binder的服务端,向客户端EthernetManger提供了调用接口的引用。因此,应用可以通过EthernetManger来访问以太网的相关接口。本篇文章将从APP调用以太网的使能和关闭的接口流程作为切入点来分析,以太网框架中,上层app是如何将指令传递到底层。图1-1所示为以太网使能和关闭 阅读详情

相关推荐

IAR下载Linux环境适配:入门级安装指导

详细介绍如何在Linux系统中完成iar下载与环境配置,帮助开发者快速上手IAR集成开发环境,解决常见安装问题,提升开发效率。

weixin_35754676的博客 766

框架--mybatis框架之表间的关联关系

mybatis框架之多表关联关系(基于xml文件) 表与表之间都有哪些关系? 一对一关系: 一个订单只能对应一个用户 一对多关系: 一个用户可以对应多个订单 多对多关系: 多个订单详情对应多个商品 一对一关系示例 这里演示两种方式实现一对一关系,使用resultType和使用resultMap的方式,代码中有注释讲解 表结构 myuser表结构 orders表结构 po层实...

weixin_45089791的博客 223

基于PyTorch的BP神经网络PID控制器动态调参实战

本文详细介绍了基于PyTorch的BP神经网络PID控制器动态调参实战,结合BP神经网络的自适应能力和PID控制算法的经典优势,实现工业控制中的高效参数调整。通过PyTorch实现BP-PID融合架构,包括网络设计、损失函数优化及动态调参技巧,显著提升控制性能,适用于温度控制、电机控制等场景。

weixin_29094775的博客 523

java中怎么实现一对多的关系_JAVAEE框架学习——Hibernate——一对多|多对多关联关系映射操作...

表关系的分析数据库中多表之间存在着三种关系:表关系表与表的三种关系:一对多|多对一建表原则:在多的一方创建外键指向一的一方的主键一对多表中的表达表中表达实体中的表达实体中的表达orm元数据表达多对一配置column="lkm_cust_id"class="Customer">这里的这个配置表示的是:当前的这个配置对象存在多对一的情况,其中name表示实体中多对一的一的名字,column表示外...

weixin_36281055的博客 946

在已有win10系统下安装Ubuntu,最后出现执行‘grub-install/dev/nvme0n1p5‘失败的致命错误的解决方案

本人电脑型号戴尔灵越,两个SSD512G固态硬盘,c盘为系统盘. Ubuntu版本为20.04LTS,在官网下载https://ubuntu.com/download/desktop/thank-you?version=20.04.3&architecture=amd64 系统盘制作工具为Rufus-3.15http://rufus.ie/zh/ 安装过程网上很多,在这里就不赘述了. 其他安装过程都很顺利,直至安装最后出现这个 本来安装了到最后还以为成了,结果又不行...... 后.

XiaoChen_gugugu的博客 1万+

Blender入门教程-3D视图界面介绍

3D视图用于与3D场景交互,可用于各种目的,例如建模、动画、纹理绘制等。在关闭 启动画面 后,启动场景会显示在3D视口中(如果没有加载其他blend文件)。01 标题栏标题栏包含了基于当前 模式 的各种菜单和控制。

weixin_52345129的博客 2291

java 映射关系_Java中一对多映射关系

通过栗子,一个人可以有多辆汽车定义人 这个类人可以有很多辆汽车,类中车属性用数组class Person{private String name;private String phone;private Car[] car;public Person() {}public Person(String name, String phone) {this.name = name;this.phon...

weixin_29503445的博客 561

GPU服务器选购避坑指南:从硬件配置到场景化性能调优

本文提供GPU服务器选购的全面指南,涵盖硬件架构解析、应用场景配置策略和性能调优实践。针对大模型训练、推理服务和科学计算等场景,详细分析GPU选型、内存带宽匹配和散热设计等关键因素,帮助技术决策者避免常见配置误区,实现成本效益最大化。

peace的博客 1031

Mybatis中表的关联关系

一对多 多对一 关联关系

qq_42338744的博客 1464

手把手教你用C++和NI-VISA写个简易仪器上位机(附QT工程配置)

本文详细介绍了如何使用C++和QT框架结合NI-VISA驱动开发跨平台仪器控制上位机软件。从Ubuntu环境配置、VISA通信核心架构设计到QT界面与业务逻辑解耦,提供了完整的实战指南和代码示例,帮助开发者快速构建专业级仪器控制程序。

weixin_42522374的博客 275

quartusII简易CPU设计

优点可以实现八种运算,数据的存取及运算都能很好的实现,上板也很成功。缺点首先由于自己知识储备的缺乏,只能实现较为简单的8种运算,也是最简单的直接寻址。其次为了方便操作,没有从外部输入数据,都是直接使用存储在存储器中的数据。后续发展后续会在此简易CPU的基础上增加一些功能对CPU进行完善,如算术运算可以考虑是补码运算,输入、输出采用存储缓冲等等,直至完整的全功能的处理器。收获通过这次实践,更熟悉Quartus软件的操作。能过更加清楚每个器件的操作,比如计数器,运算器,译码器等的实现功能。

Kong08242022的博客 3484

Mybatis表关系操作(一对一、一对多、多对多)

一、resultMap关键字 Mybatis负责的是Dao层之间的交互,我们都知道表与表之间具有三种关系,一对一,一对多,多对多。我们要想让结果封装到bean中,就要通过resultMap关键字进行映射。 <resultMap type="" id=""></resultMap> type表示bean的类型。 id表示该resultMap的名称。 在resul...

c17315377559的博客 2581

如何使用CPU-Z获取内存条频率信息(编程)

当我们需要获取计算机内存条的频率信息时,可以利用CPU-Z这个工具来实现。CPU-Z是一款专门用于获取计算机硬件信息的工具,它提供了API接口,我们可以通过编程的方式来获取内存条频率信息。你可以从CPU-Z官方网站下载适用于你的操作系统的CPU-Z程序,并从安装目录中找到。函数,我们可以初始化CPU-Z,如果返回值不为0,则表示初始化失败。函数来获取内存条频率信息,如果返回值小于等于0,则表示获取失败。函数来初始化CPU-Z并获取内存条频率信息。最后,我们将获取到的内存条频率信息打印输出,并使用。

ByteProwl的博客 460

Mybatis | 06 Mybatis多表查询**

Mybatis | 06 Mybatis多表查询Mybatis多表查询1. 四种表的关系1.1 一对多关系1.2 多对一关系1.3 一对一关系1.4 多对多关系2. 示例:用户和账户的查询2.1 相关准备2.1.1 数据库2.1.2 代码2.1.2.1 用户和账户实体类2.1.2.2 用户和账户的DAO层接口2.1.2.3 配置文件2.1.2.4 测试方法2.2 一对一查询2.2.1 使用创建子类的方式2.2.1.1 创建账户子类2.2.1.2 账户DAO层接口2.2.1.3 账户映射配置文件2.2.1.4

nothingYHN的博客 7366

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Mybatis的多表之间关系的操作

一、多表之间的查询关系映射使用xml文件配置方式 1.一对多 User实体类 public class User implements Serializable { private int id; private String username; private Date birthday; private String sex; private String address; // 一对多关系映射,一个用户可能对应多个账户,主表实体对应从表实体的集合

weixin_44961111的博客 271

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【Spring集成MyBatis】MyBatis的多表查询

MyBatis的多表查询

passer__jw767的博客 1577

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JavaWeb——MyBatis框架之多表查询操作实战案例总结(MyBatis1对1查询,MyBatis1对多查询,MyBatis多对多查询)

多表之间的关系,分为一对一、一对多(多对一)、多对多,具体的不再赘述了,在数据库专栏-MySQL数据中有总结过。我们这里详细总结下MyBatis中的多表操作,所使用的工程源码会在文章末尾附上。 1 MyBatis的多表查询 以一个用户和账户的示例说明多表查询的实现步骤: 【需求】:一个用户可有多个账户(多个账户也可属于一个用户),一个账户只能属于一个用户; 【步骤】: 1)建立数据库表:用户表、账户表,在账户表添加外键,实现一对多关系; 2)建立两个实体类:用户实体类、账户实体类,实体类要...

数字世界 万物互联 2256

mybatis中xml怎么写(表与表之间的关系分析)

一、背景 1.在实际开发中,经常会向数据库中创建多个表,问且多个表示有关系的,首先我们先讲讲我们的表设计与分析,然后我们再讲讲 在mybatis中xml怎么去使用这个东西。下面我们先讲讲多表的分析与设计。 二、多表的分析与设计 1.一对多的关系 例如:一个部门可以有多个员工,一个员工只能属于某一个部门。 一个分类下有多个商品,一个商品只能属于某个分类。 ...

码农小默 1543

Mybatis多表关联查询之三表查询

在开发中经常用到多表查询,这里演示三表查询的情况。 业务逻辑:购物车订单的逻辑 该逻辑共涉及到三张表 1. order表 就是订单表 记录 订单人的信息、订单地址、订单号、订单的总价, 一条订单记录可能会有多个商品所以 有创建了一个订单详情表 2. 订单详情表记录、订单中一种商品的总价,数量 3. 商品表、记录商品的详情 要求...

caoPengFlying的博客 2万+

Mybatis关联关系映射与表对象之间的关系

总的来说,MyBatis的关联关系映射定义非常灵活,可以根据需求使用XML或注解来进行配置,提供了丰富的选项来满足不同场景下的需求。其中名为 cid 的属性字段为 t_hibernate_category (类别表) 的 category_id (主键) 的外键。其中名为 order_id 的属性字段为 t_hibernate_order (订单表) 的 oid (主键) 的外键。其中名为 bid 的属性字段为 t_hibernate_book (书籍表) 的 bid(主键) 的外键。

kissship的博客 1656

Mybatis表之间的关系分析 注解开发 @One @Many介绍 一对一 一对多

延迟加载,立即加载, 对一一般选用立即加载,对多用延迟加载

韦恩少爷的博客 1821

Mybatis——多表查询

MyBatis 是一个优秀的持久层框架,它提供了强大的支持来执行数据库操作,包括多表查询。多表查询是指从多个数据库表中检索数据的过程,这在实际的应用中非常常见。MyBatis 提供了多种方法来执行多表查询,以下是一些常见的技术和方法:1.使用嵌套查询: 这是最基本的多表查询方法,通过在 SQL 语句中嵌套子查询来联合多个表的数据。例如,你可以在 SELECT 语句中使用子查询来从一个表中获取数据,然后再将其用于主查询中。这种方法在某些简单情况下是有效的,但对于复杂的多表查询可能会变得冗长和难以维护。

nine06的博客 1746

【Mybatis】关系映射 表对象之间的关系

关联关系映射是指在数据库中,通过定义表之间的关联关系,将多个表的数据进行关联查询和映射的过程。通过关联关系映射,可以方便地获取相关联表的数据,并将其映射到对应的实体类中。Mybatis是一种Java持久层框架,它提供了一种将数据库表和Java对象之间进行关联关系映射的方式。在Mybatis中,可以通过配置文件或注解的方式,定义表之间的关联关系,并将查询结果映射到对应的Java对象中。通过Mybatis的关联关系映射,可以方便地进行复杂的数据库查询操作。

2301_76988707的博客 911

mybatis多表查询的结果映射(resultMap)

Mybait多张表查询时的结果映射resultMap 1、mybatis简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。它可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 2、resultMap(多表查询 或 数据库列名与实体属性名不一致时使用) resultMap

tuoniaoxs的博客 4714

Mybaits表关系之1对多

文章目录Mybaits表关系之1对多 Mybaits表关系之1对多 ​ 将查询出来的字段值,装填到对象集合属性中,完成对象属性的创建和赋值。查询出来的一行可能只是对象的一部分,因为对象集合属性可能还不完全。对象集合属性需要指定装填。 查询dept表,并且把部门下的所有雇员对象装填到集合对象属性中 dept对象 public class Dept { private Integer deptI...

qq_32640013的博客 172

MyBatis-多表之间关联关系

一对一关系 需求:学生和身份证 创建表 create table cards( cid int(5) primary key, cnum varchar(10) ); create table students( sid int(5) primary key, sname varchar(10), scid int(5), constraint scid_fk foreign key(scid) references cards(cid) ); insert into cards(cid,

Sharpen__的博客 369
上一篇: myBatis里表与表之间的关系 多对一时候
下一篇: myBatis分页查询
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值