Mybatis多表查询

ops/2024/10/22 5:16:30/

MyBatis-多表查询-一对一查询(方式一)

在这里插入图片描述

在这里插入图片描述

一个菜品对应一个分类

直接菜品记录category对象

在这里插入图片描述
菜品id写入Dish,后面的分类直接写入 Category类

封装,如果sql不能封装上,那么直接使用resultmap封装

在这里插入图片描述使用resultType只能封装基本属性

所以要定义一个resultmap手动封装

使用标签

要有id

使用resultmap 进行 一对一的封装

MyBatis-多表查询-一对一查询(方式二)

使用别名 : 别名就是类名的简写 首字母写法都可以 不区分大小写

当在peoperties中配置别名之后,直接写别名就可以

总结

Mybatis的多表查询 1对1

首先 1对1查询 ,
首先在pojo实体类中先声明出另一个对象的属性

在这里插入图片描述
因为是1对1查询

然后按照mybatis的三步约定
第一 同包同名 mapper接口要与mapper.xml所在的包的路径要相同 ,并且名字要一样
第二个 mapper.xml的namespace的地址要写 mappe的全类名
第三个mapper.xml的id要与mapper的方法名要一致

在这里插入图片描述
java是与resource是同一级的

都在main的下面

main的下面只有 java与resource

mybatis_72">mybatis的使用

mybatis的使用首先要配置数据库的参数

在这里插入图片描述
mybatis的驼峰映射也要开启,不用设计参数名了
在这里插入图片描述

然后进行sql的书写

在这里插入图片描述

这个是多表的查询所以,在一个resultmap中是查询的引用对象

resulttype是查询的简单数据
在这里插入图片描述

使用resultMap

<resultMap id="dishMap1" type="dish"><id column="id" property="id"></id><result column="name" property="name"></result><result column="category_id" property="categoryId"></result><result column="price" property="price"></result><result column="image" property="image"></result><result column="description" property="description"></result><result column="status" property="status"></result><result column="create_time" property="createTime"></result><result column="update_time" property="updateTime"></result><result column="cid" property="category.id"></result><result column="cname" property="category.name"></result><result column="ctype" property="category.type"></result><result column="csort" property="category.sort"></result><result column="cstatus" property="category.status"></result><result column="ccreate_time" property="category.createTime"></result><result column="cupdate_time" property="category.updateTime"></result></resultMap>

这是第一种方式,
直接列对应属性,

第二种方式使用association

<resultMap id="dishMap2" type="Dish"><id column="id" property="id"></id><result column="name" property="name"></result><result column="category_id" property="categoryId"></result><result column="price" property="price"></result><result column="image" property="image"></result><result column="description" property="description"></result><result column="status" property="status"></result><result column="create_time" property="createTime"></result><result column="update_time" property="updateTime"></result><association property="category" javaType="com.healer.pojo.Category"><id column="cid" property="id"></id><result column="cname" property="name"></result><result column="ctype" property="type"></result><result column="csort" property="sort"></result><result column="cstatus" property="status"></result><result column="ccreate_time" property="createTime"></result><result column="cupdate_time" property="updateTime"></result></association></resultMap>
<!--    查询菜品,同时查询出菜品所示的分类-->
<select id="findAlldishWithCategory" resultMap="dishMap2">select d.*,c.id          cid,c.name        cname,c.type        ctype,c.sort        csort,c.status      cstatus,c.create_time ccreate_time,c.update_time cupdate_timefrom dish dleft join category c on d.category_id = c.id;
</select>

列对应着属性

如果想要简写,可以使用

#指定Mybatis的实体目录
mybatis.type-aliases-package=com.healer.pojo

在这里插入图片描述然后就可以写别名

在association中
使用javaType

在这里插入图片描述

Mybatis-多表查询-一对多查询

在这里插入图片描述

查询的数据往分类里面封装

既然一个分类里面的基本信息不能满足需求了

使用集合 在pojo中定义一个集合

在这里插入图片描述

多对多的查询

在这里插入图片描述

保持原则

查询的数据要往哪个表中去封装

总结

不用记什么多对多,一对多 ,一对一

只需要记住使用resultmap

什么什么封装的

下面id写

然后其他的使用result

遇到对象了使用association , javaType

遇到集合了使用collection , ofType

Mybatis完结撒花


http://www.ppmy.cn/ops/45222.html

相关文章

《web应用技术》第9次课后作业

一、将前面的代码继续完善功能 1、采用XML映射文件的形式来映射sql语句&#xff1b; 2、采用动态sql语句的方式&#xff0c;实现条件查询的分页。 二、学习git的使用。 1、每个小组将自己的项目上传到gitee&#xff0c;学会协作开发&#xff1b; 2、学会从gitee上拉取项目…

理解消息队列:队列与主题的区别

理解消息队列:队列与主题的区别 如果你研究过多种消息队列产品,可能会发现每种消息队列都有自己的一套消息模型,像队列(Queue)、主题(Topic)或分区(Partition)这些名词概念在不同的消息队列模型中含义各异。这是因为没有统一的标准。尽管曾有国际组织尝试制定过消息相…

字符串的扩展距离问题--------动态规划算法

文章目录 前言一、字符串的扩展距离问题 (给出问题)二、分析1.状态转移方程的由来 三、代码总结 前言 学无止境&#xff0c;笔勤不辍。最近笔者又闲了下来&#xff0c;于是抽空在课上写一篇关于动态规划思想的典型问题(最近遇到的奇奇怪怪的问题&#xff0c;困扰了笔者一段时间…

qt多语言翻译不生效的原因

假设您有QT语言家的基础知识&#xff0c;假设网上那些所有的问题您都已经排查过了&#xff0c;但依然翻译不生效&#xff0c;那么可以看下这篇帖子&#xff0c;其实就一个问题&#xff0c;变量的生命周期&#xff0c;假设QTranslator是一个函数内的变量&#xff0c;且没有被声明…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第29课-会员制展厅

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第29课-会员制展厅 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

齿轮常见故障学习笔记

大家好&#xff0c;这期咱们聊一聊齿轮常见的失效形式&#xff0c;查阅了相关的资料&#xff0c;做个笔记分享给大家&#xff0c;共同学习。 介绍 齿轮故障可能以多种方式发生。如果在设计阶段本身就尽量防止这些故障的产生&#xff0c;则可以产生改更为优化的齿轮设计。齿轮…

Go GORM介绍

GORM 是一个功能强大的 Go 语言 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它提供了一种方便的方式来与 SQL 数据库进行交互&#xff0c;而不需要编写大量的 SQL 代码。 GORM的关键特性 全功能的ORM&#xff1a;支持几乎所有的ORM功能&#xff0c;包括模型定义、基…

云原生架构内涵_3.主要架构模式

云原生架构有非常多的架构模式&#xff0c;这里列举一些对应用收益更大的主要架构模式&#xff0c;如服务化架构模式、Mesh化架构模式、Serverless模式、存储计算分离模式、分布式事务模式、可观测架构、事件驱动架构等。 1.服务化架构模式 服务化架构是云时代构建云原生应用的…