mybatis怎麼配置一對多
⑴ spring boot + MyBatisPlus 一對多、多對一、多對多的解決方案
在學習MyBatisPlus 時念穗,簡單的查詢非常簡單,只需繼承了相關類,就能夠進行增刪改。但是在實旅高沖際運用時,對象之間的關系非常復雜,一對多、多對一、多對多。網上查詢了大量資料都無法解決此問題。
難道要把所有的用Mybatis的重寫一次?
重寫一次Plus的方法還能不能用?
實在沒辦只能查看官網https://mp.baomidou.com/guide/在註解處找到了可能的解決拆殲方案
@TableName註解可以設置對應的resultMap 看到這里我想是不是,在Mapper中設置好resultMap,map中使用association、或者collection就能解決了。結果是可以的,上圖:
實體類
mapper
rest效果
完美解決!!!
⑵ MyBatis一對多和一對一xml文件的配置
在使用mybatis的時候我們經常要用到聯合查詢,現在就對一表對多表和一對一表的xml文件配置進行說明
Student.xml
StudentBean
一對一在Bean中我們可以將其對象作為自身實體類的一個成員變數,一對多返回的結果是一個集合所以將其集合作為成員變數。
CourseBean
TeacherBean
Course.xml
teacher.xml
association標簽是用來配置一對一表判局查詢的,collection是配置一對多表查詢的。
一對一查詢中mybatis會將查詢結哪沖慎果封裝到相應的對象中,如teacher對象,李敬而一對多將返回一個List集合如List<courseList>.
⑶ mybatis一對多分頁查詢
例如 一個門店 對應多張圖片 可正常使用PageHelper分頁
PageHelper.startPage(page, size);
select
*
from cms_store
limit 10,10 //正常單表查分頁即可
</select>
<resultMap id="BaseResultMap" type="com.bear.sh.cloud.service.somhec.domain.CmsStore">
<result column="id" jdbcType="INTEGER" property="id" />
<result column="enable_status" jdbcType="INTEGER" property="enableStatus" />
<result column="delete_flag" jdbcType="INTEGER" property="deleteFlag" />
<select id="queryImagesList" resultType="com.bear.sh.cloud.service.somhec.domain.CmsStoreImage">
select<include refid="Base_Image_Column_List">
from cms_store_image csi
where csi.store_id = #{id}
</select>
即1條主表記錄 然後封裝resultMap 里的cmsStoreImages屬性時,會拿這條記錄的id(不限於id y要拿什麼值 輸什麼column)(所以column的值很重要!!) 來到select里去查對應的多條記錄
如果使用left join 一對多查詢 則會產生多條記錄 例如一個門店有3條圖片記錄
則本來要查的門物褲檔店應該是一條不重復記錄 結果統計數據的時候罩亂卻統計了3條 雖然最後mybatis會封裝到1條主表數據里
這會造成純並兩個問題: 1:總條數不準 2查詢10條主表數據 mybatis組合封裝後只返回了 三四條主表數據
解決:先對主表進行分頁查詢 然後left join 從表
select * from
(select * from cms_store limit 10) cs
left join cms_store_image csi on cs.id = csi.store_id 即可查詢一對多且 一的條數為10條
總記錄數需要另外統計
⑷ mybatis怎麼配置一對多的映射關系
MyBatis詳解 與配置MyBatis+Spring+MysqlMyBatis 是一個可以自定義SQL、存儲過程和高級映射的持久層框架。MyBatis 摒除了大部分的JDBC代碼、手工設置參數和結果集重獲。MyBatis 只使用簡單的XML 和註解來配置和映射基本數據類型、Map 介面和POJO 到資料庫記錄。相對Hibernate和Apache OJB等「一站式」ORM解決方案而言,Mybatis 是一種「半自動化」的ORM實現。需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(與Spring結合包)。MyBatis簡介 MyBatis 是一個可以自定義SQL、存儲過程和高級映射的持久層框架。MyBatis 摒除了大部分的JDBC代碼、手工設置參數和結果集重獲。MyBatis 只使用簡單的XML 和註解來配置和映射基本數據類型、Map 介面和POJO 到資料庫記錄。相對Hibernate和Apache OJB等「一站式」ORM解決方案而言,Mybatis 是一種「半自動化」的ORM實現。需要使用的Jar包:mybatis-3.0.2.jar(mybatis核心包)。mybatis-spring-1.0.0.jar(與Spring結合包)。
⑸ MyBatis一對多查詢及延遲載入
查詢所有訂單信息,關聯查詢下單用戶信息。
主信息段核:訂單信息
從信息:用戶信息
使用resultMap進行結果映射,雹中定義專門的resultMap用於映射一對一查源燃山詢結果。
property:Order對象的user屬性。
javaType:user屬性對應 的類型。
association:表示進行一對一關聯查詢映射。
使用resultMap進行結果映射時,具體是使用association完成關聯查詢的映射,將關聯查詢信息映射到pojo對象中。
查詢所有用戶信息及用戶關聯的訂單信息。
主信息:用戶信息
從信息:訂單信息
在一對多的使用中,只能使用resultMap進行結果映射
Collection標簽:定義了一對多關聯的結果映射。
property="orders":關聯查詢的結果集存儲在User對象的上哪個屬性。
ofType="com.demo.mybatis.po.Order":指定關聯查詢的結果集中的對象類型即List中的對象類型。此處可以使用別名,也可以使用全限定名。
MyBatis根據關聯對象查詢的select的語句的執行時機,分為三種類型: 直接載入、侵入式載入和深度延遲載入 。
延遲載入策略需要在Mybatis的全局配置文件中,通過標簽進行設置。
執行完對主載入對象的select語句,馬上執行對關聯對象的select查詢。
執行對主載入對象的select查詢時,不會執行對關聯對象的查詢。但當要訪問主載入對象的某個屬性(該屬性不是關聯對象的屬性)時,就會馬上執行關聯對象的select查詢。
執行對主載入對象的select查詢時,不會執行對關聯對象的查詢。當要訪問主載入對象的詳情時也不會執行對關聯對象的查詢。當訪問到關聯對象的詳情時才執行對關聯對象的查詢。
⑹ mybatis一對多查詢怎麼配置兩個表沒有建立外鍵關系
用這個設置外鍵試猛御櫻試
<association property="" column="枝叢" javaType="" resultMap=""/拆宴>
⑺ mybatis中怎麼實現一對多
可以使用rapid-generator生成吵轎鏈模板 寫個baseVO 包括你需要的插入的屬性帆鏈 直接把base當變數升孫傳給sqlmap
⑻ mybatis中一對多怎麼設置
id和result的唯一不同是id表示的結果將是當比較對象實例時用到的標識屬性。這幫助來改進整體表現,特別是緩存和嵌拍坦念入結果映射。所以不同數據的id應該唯一區別,不然導致數據結果集只有一條數據。顧客和訂單的信寬例子做說明:一個顧客可以有多個訂單, 一個訂單只對應一個顧客
1、代碼結構圖: