mybatis使用association的resultMap方式進行對映少資料問題
在第一次使用mybatis的複雜對映的時候發現對映出來的物件的數量和那sql直接去庫裡面查的數量要少。
public class Blog {
private int id;
private String title;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
public class BlogDetail {
private Blog blog;
private int commentCount;
public Blog getBlog() {
return blog;
}
public void setBlog(Blog blog) {
this.blog = blog;
}
public int getCommentCount() {
return commentCount;
}
public void setCommentCount(int commentCount) {
this.commentCount = commentCount;
}
}
我使用的方式是如下方式:
<resultMap type="BlogDetail" id="blogDetailResultMap">
<result property="commentCount" column="comment_count" />
<association property="blog" column="blog_id" javaType="Blog" resultMap="blogResultMap" />
</resultMap>
<resultMap type="Blog" id="blogResultMap">
<id property="id" column="blog_id" />
<result property="title" column="title" />
<result property="content" column="content" />
</resultMap>
<select id="selectByID" parameterType="int" resultMap="detailBlogResultMap">
select
B.id as blog_id ,
B.title as blog_title ,
B.content as blog_content ,
(select count(*) from tb_comment C where C.blog_id=B.id) as comment_count
from tb_blog B
where B.id = #{id}
</select>
程式跑起來,沒有任何的報錯。但是mybatis對映出來的物件的數量比sql直接在資料庫裡面查出來的要少。
對比參考的資料,發現我的第一個resultMap 中少一個主鍵。
按照這個思路最終發現少資料原因是blogDetailResultMap中comment_count都是一樣的。
mybatis的複雜對映參照:
http://blog.csdn.net/is_zhoufeng/article/details/17208183
原文如下:
<resultMap type="Blog" id="detailBlogResultMap03">
<!-- 注意這裡的id -->
<id property="id" column="blog_id" />
<result property="title" column="blog_title" />
<result property="content" column="blog_content" />
<result property="pubTime" column="blog_pub_time" />
<association property="author" column="blog_user_id" javaType="User" resultMap="authorResultMap03" />
<collection property="comments" column="comment_blog_id" ofType="Comment" resultMap="commentResultMap03" />
</resultMap>
<resultMap type="User" id="authorResultMap03">
<!-- 注意這裡的id -->
<id property="id" column="user_id" />
<result property="title" column="title" />
<result property="password" column="user_password" />
<result property="userName" column="user_user_name" />
<result property="userAge" column="user_user_age" />
<result property="userAddress" column="user_user_address" />
</resultMap>
<resultMap type="Comment" id="commentResultMap03">
<id property="id" column="comment_id" />
<result property="content" column="comment_content" />
</resultMap>
<select id="selectByID03" parameterType="int" resultMap="detailBlogResultMap">
select
B.id as blog_id ,
B.title as blog_title ,
B.content as blog_content ,
B.pub_time as blog_pub_time ,
B.user_id as blog_user_id ,
U.id as user_id,
U.password as user_password,
U.user_name as user_user_name ,
U.user_age as user_user_age ,
U.user_address as user_user_address ,
C.id as comment_id ,
C.blog_id as comment_blog_id ,
C.content as comment_content
from `blog` B
left outer join `user` U on B.user_id = U.id
left outer join `comment` C on B.id = C.blog_id
where B.id = #{id}
</select>
相關文章
- Mybatis 輸出對映-- resultType resultMapMyBatis
- Mybatis 強大的結果集對映器resultMapMyBatis
- resultMap 和 resultType 的欄位對映覆蓋問題
- MyBatis(四) 對映器配置(自動對映、resultMap手動對映、引數傳遞)MyBatis
- 【Mybatis系列】從原始碼角度理解Mybatis欄位對映-AS&ResultMapMyBatis原始碼
- mybatis中resultMap使用之返回分組資料MyBatis
- Mybatis配置檔案resultMap對映啥時候可寫可不寫?MyBatis
- MyBatis學習 之 二、SQL語句對映檔案(1)resultMapMyBatisSQL
- MyBatis 使用resultMap 以及 一對一和一對多MyBatis
- myBatis——註解,#{}與${},resultMap的使用MyBatis
- 使用ETL進行資料接入的方式
- 使用mod對資料進行進行分組解決TEMP表空間不足的問題
- 有問題的mybatis的sql導致對資料庫進行了批量的修改MyBatisSQL資料庫
- 如何使用常用的6種方式對資料進行轉換(二)
- ABAP 740的新語法 - 使用BO association的方式進行內表連線操作
- MyBatis 的 配置檔案開發方式 和 註解開發方式(對資料庫進行增刪改查)MyBatis資料庫
- mybatis 實體類排除資料庫欄位對映MyBatis資料庫
- Mybatis結果對映MyBatis
- Mybatis基礎:Mybatis對映配置檔案,Mybatis核心配置檔案,Mybatis傳統方式開發MyBatis
- 【mybatis xml】資料層框架應用--Mybatis 基於XML對映檔案實現資料的CRUDMyBatisXML框架
- Mybatis 基礎xml對映MyBatisXML
- MyBatis3:SQL對映MyBatisS3SQL
- .NET CORE 中使用AutoMapper進行物件對映APP物件
- Mybatis基於註解的方式訪問資料庫MyBatis資料庫
- hibernate對映合成模式的問題模式
- Spring整合Mybatis方式一 - 常規整合 - 註冊對映器SpringMyBatis
- mybatis進行資料庫建表 CREATE command denied to user 'root'@'127.0.0.1' for table 問題MyBatis資料庫127.0.0.1
- 帶碼農《手寫Mybatis》進度3:實現對映器的註冊和使用MyBatis
- MyBatis 查詢資料時屬性中多對一的問題(多條資料對應一條資料)MyBatis
- MyBatis從入門到精通(九):MyBatis高階結果對映之一對一對映MyBatis
- MyBatis從入門到精通(十一):MyBatis高階結果對映之一對多對映MyBatis
- 『手寫Mybatis』實現對映器的註冊和使用MyBatis
- Mybatis實體關聯對映MyBatis
- mybatis關聯關係對映MyBatis
- Mybatis對映檔案簡介MyBatis
- MyBatis 結果對映總結MyBatis
- mybatis高階結果對映MyBatis
- Mybatis學習筆記(5)-高階對映之多對多對映MyBatis筆記