關於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的
到此這篇關於關於mybatis一對一查詢,一對多查詢遇到的錯誤的文章就介紹到這瞭,更多相關mybatis一對一查詢一對多查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Mybatis一對多查詢列表屬性處理示例詳解
- 解決mybatis一對多查詢resultMap隻返回瞭一條記錄問題
- mybatis如何使用註解實現一對多關聯查詢
- Mybatis中resultMap的Colum和property屬性詳解
- Mybatis之@ResultMap,@Results,@Result註解的使用