Mybatis之collection標(biāo)簽中javaType和ofType屬性的區(qū)別說明
collection標(biāo)簽中的javaType和ofType屬性的區(qū)別
在使用mybatis時(shí),有時(shí)候需要在數(shù)據(jù)庫中進(jìn)行關(guān)聯(lián)查詢(left/right join)來根據(jù)某個(gè)字段獲取到另一個(gè)表的的一個(gè)List集合。
在配置resultMap時(shí),需要用到collection標(biāo)簽對(duì)這個(gè)LIst屬性進(jìn)行映射:
比如在部門表中有一個(gè)列表List存放這個(gè)表中的所有員工,javaBean如下:
public class Department { private Integer id; private String departmentName; private List<Employee> emps; }
員工表如下:
public class Employee { private Integer id; private String lastName; private String email; private String gender; }
用mybatis對(duì)這兩個(gè)表進(jìn)行關(guān)聯(lián)查詢查詢
<select id="getDeptByIdPlus" resultMap="MyDept"> SELECT d.id did, d.dept_name dept_name, e.id eid, e.last_name last_name, e.email email,e.gender gender FROM department d LEFT JOIN employee e ON d.id = e.d_id WHERE d.id = 1 </select>
由于是通過關(guān)聯(lián)查詢得到的這個(gè)List
所以此時(shí)需要用到resultMap標(biāo)簽對(duì)返回值的類型進(jìn)行自定義:
<resultMap type="bean.Department" id="MyDept"> <id column="did" property="id"/> <result column="dept_name" property="departmentName"/> <!-- collection定義關(guān)聯(lián)的集合類型的屬性的封裝規(guī)則: property="emps":指定這是哪個(gè)集合屬性,這里為那個(gè)集合屬性emps ofType:指定集合內(nèi)封裝的JavaBean類型(集合內(nèi)裝的什么),這里即為Employee類 --> <collection property="emps" ofType="bean.Employee"> <!-- 定義集合中元素的封裝規(guī)則 --> <id column="eid" property="id"/> <result column="last_name" property="lastName"/> <result column="email" property="email"/> <result column="gender" property="gender"/> </collection> </resultMap>
在這個(gè)resultMap 標(biāo)簽中,用collection這個(gè)子標(biāo)簽對(duì)這個(gè)List進(jìn)行映射。通過Alt+/可以發(fā)現(xiàn),collection標(biāo)簽中包含兩個(gè)關(guān)于javaBean的Type屬性分別是ofType和javaType。
其中ofType指定的這個(gè)List所存放的javaBean的類型,比如這里就是Employee類型。
而javaType指定的當(dāng)前這個(gè)配置的標(biāo)簽所對(duì)應(yīng)的屬性,比如我們這里的collection配置的是一個(gè)List,就可以配置成javaType=“java.util.ArrayList”(此處沒寫)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:三角數(shù)字
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:三角數(shù)字,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06Springmvc模式上傳和下載與enctype對(duì)比
這篇文章主要介紹了Springmvc模式上傳和下載與enctype對(duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12Java優(yōu)先隊(duì)列?priority?queue
本文主要介紹了Java優(yōu)先隊(duì)列?priority?queue,優(yōu)先隊(duì)列是一種特殊的數(shù)據(jù)結(jié)構(gòu)隊(duì)列中每一個(gè)元素都被分配到一個(gè)優(yōu)先權(quán)值,出隊(duì)順序按照優(yōu)先權(quán)值來劃分。一般有兩種出隊(duì)順序高優(yōu)先權(quán)出隊(duì)或低優(yōu)先權(quán)出隊(duì),想了解具體內(nèi)容的小伙伴可以參考下文內(nèi)容,希望對(duì)你有所幫助2021-12-12詳談鎖和監(jiān)視器之間的區(qū)別_Java并發(fā)
下面小編就為大家?guī)硪黄斦勬i和監(jiān)視器之間的區(qū)別_Java并發(fā)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06