當前位置:首頁 » 存儲配置 » mybatis怎麼配置一對多

mybatis怎麼配置一對多

發布時間: 2023-05-10 03:18:35

⑴ 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、代碼結構圖:


熱點內容
sql能力 發布:2025-02-09 10:43:50 瀏覽:981
編譯framework 發布:2025-02-09 10:42:11 瀏覽:380
五子棋對戰演算法 發布:2025-02-09 10:12:19 瀏覽:712
php樹菜單 發布:2025-02-09 10:04:10 瀏覽:359
linux保存ip 發布:2025-02-09 10:04:10 瀏覽:23
四川霜狼伺服器怎麼樣 發布:2025-02-09 10:02:44 瀏覽:145
Vs中h編譯選項是灰的 發布:2025-02-09 10:01:59 瀏覽:557
安卓43怎麼升級44 發布:2025-02-09 09:51:33 瀏覽:463
美國雲伺服器快還是香港快 發布:2025-02-09 09:34:33 瀏覽:988
怎麼解壓qq文件 發布:2025-02-09 09:18:14 瀏覽:581