Mybatis關聯查詢,查詢出的記錄數量與數據庫直接查詢不一致,如何解決?


  <select id="findUserInfoListForMap"    resultMap="BaseResultMap">
  SELECT  p.name, u.u_name,u.company,u.proComany,u.mobile,u.email, r.money
 FROM iw_user u
 LEFT JOIN raiseentry r on r.userId=u.id
 LEFT JOIN project p on r.sourceId=p.projectId
  </select>

 經細心驗證,BaseResultMap中的屬性均有配全,但是該語句執行時返回的記錄條數與直接在數據庫中查詢的不一致

 但是改成如下語句后,(多了個查詢字段u.id)

  <select id="findUserInfoListForMap"    resultMap="BaseResultMap">   

SELECT  u.id,p.name, u.u_name,u.company,u.proComany,u.mobile,u.email, r.money  

FROM iw_user u  

LEFT JOIN raiseentry r on r.userId=u.id  

LEFT JOIN project p on r.sourceId=p.projectId   </select>

 

查詢結果正常。百度了下發現也有人碰到這種情況(http://www.iteye.com/problems/95931),其解決方法是:

1)select * from。。。。

2)select  r.userId,u.id, r.sourceId,p.projectId(將這些字段都包括進去)。。。

3)將所要查詢的字段封裝成一個DTO對象,在Mapper.xml中再定義一個resultMap,type指向那個DTO對象,內容是需要查詢字段與DTO對象屬性中的映射。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM