关于mybatis一对一查询一对多查询遇到的问题
作者:roydon_Guo 发布时间:2022-01-26 05:25:12
标签:mybatis,一对一查询,一对多查询
springboot整合mybatis项目
博客系统
文章,相册,评论,标签,等表
IDEA为最新版2021.3.3,mysql数据库为最新版Navicat
(或许有些字段不支持特定的命名)
也是醉了,以前idea还是19版的,navicat也是老版本的时候mybatis关联查询mapper操作能正常运行,拿到相应字段,并封装,但最近写项目过程中遇到一个离谱的是,过了好久才发现,
当关联查询时,无论一对一还是一对多
除了需要注意javaType和ofType之外,还应该注意各表主键不能同一名称
实体类文章
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Article implements Serializable {
private Integer id;
private Integer authorId;
private String title;
private String content;
private Timestamp date;//private LocalDate date;
private Users user;
private List<Comment> commentList;
private List<ArticleTag> articleTagList;
}
接下来是对文章进行操作,要求查询全部文章,并关联查询作者,文章标签(一个文章多个标签)
先看一下我下面代码块的写法,注意一对一,一对多的各个实体查询时的id,都是拿的数据库的id字段,只有标签被我改为了tag_id
<select id="queryAllArticles" resultMap="ArticleList">
select a.*,u.*,t.*
from article a
join users u on a.authorid = u.id
left outer join article_tag t on a.id = t.article_id
</select>
<resultMap id="ArticleList" type="article">
<id column="id" property="id"/>
<result column="authorid" property="authorId"/>
<result column="title" property="title"/>
<result column="content" property="content"/>
<result column="date" property="date"/>
<association property="user" javaType="users">
<id column="id" property="id"/>
<result column="pet_name" property="petName"/>
<result column="headportrait" property="headPortrait"/>
</association>
<collection property="articleTagList" ofType="articleTag">
<id column="tag_id" property="tagId"/>
<result column="article_id" property="articleId"/>
<result column="tag_content" property="tag"/>
</collection>
</resultMap>
如下图
所以当我测试的时候能正常根据id拿到每张表的同一主键名称id吗
并不能拿到
控制台仅仅正确输出了标签list中的tag_id,没错,细心点,我也是最后才发现,它nn的,上面输出的user(文章作者)他的id封装错了,他的id是这篇文章的id,所以,sql我自此所有表的主键不都全命名为id了,防止此处再烙下病根,而且数据库字段在命名时,我发现字段名字为describe和tag都查不到数据,本来想简简单单命名的数据库表,也得上心了拜拜了~~改bug去了🥲😭🥲😭✍️✍️
///
看控制台输出/
我的用户表里就没有id为56的
来源:https://blog.csdn.net/m0_51390535/article/details/124958067


猜你喜欢
- 本文实例讲述了Android编程设计模式之原型模式。分享给大家供大家参考,具体如下:一、介绍原型模式是一个创建型的模式。原型二字表明了该模型
- 一、问题描述平时我们在完成某些数据的入库后,发布了一个事件,此时使用的是@EventListener,然后在这个事件中,又去对刚才入库的数据
- 序目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段。C# 6.0 虽说
- 面试题1:你了解线程池么?简单介绍一下。java提供的一个java.util.concurrent.Executor接口的实现用于创建线程池
- /// <summary>/// 获取字符串最长的数字/// </summary>/// <param nam
- 本章概要文件上传@ControllerAdvice文件上传Java 中的文件上传一共涉及两个组件,一个是 CommonsMultipartR
- Android 实现获取手机里面的所有图片详解及实例实现代码:public class MainActivity extends Activ
- 在前面都写到用AsyncTask来获取网络中的图片。其实利用消息机制也能获取网络中的图片,而且本人感觉用消息机制还是挺简单的。消息机制的图解
- Bean Validation 中内置的 constraint @Null 被注释的元素必须为 null @NotNull 被注释的元素必须
- 什么是AOPAOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented P
- 前不久,我们发布了《选择 .NET 的 n 个理由》。它提供了对平台的高层次概述,总结了各种组件和设计决策,并承诺对所涉及的领域发表更深入的
- 一、回顾Stream管道流操作通过前面章节的学习,我们应该明白了Stream管道流的基本操作。我们来回顾一下:源操作:可以将数组、集合类、行
- No ‘Access-Control-Allow-Origin‘ header is present
- 本文实例为大家分享了C#异步调用的具体代码,供大家参考,具体内容如下using System;using System.Collection
- 总结一下java使用http发送post的方法:1、post请求用于发送json 格式的参数:/** * post请求(用于请
- 由于IDEA版本更新,在新建工程的时候找不到Static Web,而且在插件里也找不到,没法下载。如图:没有Static Web新建项目的方
- 概览阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。并表示在6-8个
- 本文实例讲述了C#实现String类型和json之间的相互转换功能。分享给大家供大家参考,具体如下:////Donet2.0 需要添加引用/
- 场景:当我们正在master分支开发新功能的时候,突然接到一个任务发现线上出现了一个紧急的BUG需要修复,由于没有打新分支做这部分新需求,这
- 1 前言ATMS 即 ActivityTaskManagerService,用于管理 Activity 及其容器(任务、堆栈、显示等)。AT