springboot整合mybatis项目
博客系统
文章,相册,评论,标签,等表
IDEA为最新版2021.3.3,mysql数据库为最新版Navicat

(或许有些字段不支持特定的命名)

也是醉了,以前idea还是19版的,navicat也是老版本的时候mybatis关联查询mapper操作能正常运行,拿到相应字段,并封装,但最近写项目过程中遇到一个离谱的是,过了好久才发现,

当关联查询时,无论一对一还是一对多
除了需要注意javaType和ofType之外,还应该注意各表主键不能同一名称

实体类文章

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@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

在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<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去了🥲😭🥲😭✍️✍️
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1看控制台输出/////////////////////////////////////////////////////////////////////////////////////////////////

我的用户表里就没有id为56的user
article

在这里插入图片描述