最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis中的ResultMap的association和collection標(biāo)簽詳解

 更新時(shí)間:2022年10月11日 08:37:36   作者:小王寫博客  
這篇文章主要介紹了MyBatis中的ResultMap的association和collection標(biāo)簽詳解,主要包括association標(biāo)簽常用參數(shù)及id & result標(biāo)簽參數(shù)詳解,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

一、前言

MyBatis 創(chuàng)建時(shí)的一個(gè)思想是:數(shù)據(jù)庫不可能永遠(yuǎn)是你所想或所需的那個(gè)樣子。 我們希望每個(gè)數(shù)據(jù)庫都具備良好的第三范式或 BCNF 范式,可惜它們并不都是那樣。 如果能有一種數(shù)據(jù)庫映射模式,完美適配所有的應(yīng)用程序,那就太好了,但可惜也沒有。 而 ResultMap 就是 MyBatis 對(duì)這個(gè)問題的答案。

二、ResultMap 的屬性列表

屬性描述
id當(dāng)前命名空間中的一個(gè)唯一標(biāo)識(shí),用于標(biāo)識(shí)一個(gè)結(jié)果映射。
type類的完全限定名, 或者一個(gè)類型別名(關(guān)于內(nèi)置的類型別名,可以參考上面的表格)。
autoMapping如果設(shè)置這個(gè)屬性,MyBatis 將會(huì)為本結(jié)果映射開啟或者關(guān)閉自動(dòng)映射。 這個(gè)屬性會(huì)覆蓋全局的屬性 autoMappingBehavior。默認(rèn)值:未設(shè)置(unset)。
extends可以繼承其他resultMap的一些寫好的屬性

三、resultMap標(biāo)簽介紹

  • constructor - 用于在實(shí)例化類時(shí),注入結(jié)果到構(gòu)造方法中
    • idArg - ID 參數(shù);標(biāo)記出作為 ID 的結(jié)果可以幫助提高整體性能
    • arg - 將被注入到構(gòu)造方法的一個(gè)普通結(jié)果
  • id – 一個(gè) ID 結(jié)果;標(biāo)記出作為 ID 的結(jié)果可以幫助提高整體性能
  • result – 注入到字段或 JavaBean 屬性的普通結(jié)果
  • association – 一個(gè)復(fù)雜類型的關(guān)聯(lián);許多結(jié)果將包裝成這種類型
    嵌套結(jié)果映射 – 關(guān)聯(lián)可以是 resultMap 元素,或是對(duì)其它結(jié)果映射的引用
  • collection – 一個(gè)復(fù)雜類型的集合
    嵌套結(jié)果映射 – 集合可以是 resultMap 元素,或是對(duì)其它結(jié)果映射的引用
  • discriminator – 使用結(jié)果值來決定使用哪個(gè) resultMap
    • case – 基于某些值的結(jié)果映射
      嵌套結(jié)果映射 – case 也是一個(gè)結(jié)果映射,因此具有相同的結(jié)構(gòu)和元素;或者引用其它的結(jié)果映射

四、id & result標(biāo)簽參數(shù)詳解

屬性描述
property映射到列結(jié)果的字段或?qū)傩?。如?JavaBean 有這個(gè)名字的屬性(property),會(huì)先使用該屬性。否則 MyBatis 將會(huì)尋找給定名稱的字段(field)。 無論是哪一種情形,你都可以使用常見的點(diǎn)式分隔形式進(jìn)行復(fù)雜屬性導(dǎo)航。 人話為:就是你的Java實(shí)體類
column數(shù)據(jù)庫中的列名,或者是列的別名。一般情況下,這和傳遞給 resultSet.getString(columnName) 方法的參數(shù)一樣。
javaType一個(gè) Java 類的全限定名,或一個(gè)類型別名(關(guān)于內(nèi)置的類型別名,可以參考上面的表格)。 如果你映射到一個(gè) JavaBean,MyBatis 通??梢酝茢囝愋?。然而,如果你映射到的是 HashMap,那么你應(yīng)該明確地指定 javaType 來保證行為與期望的相一致。
jdbcTypeJDBC 類型,所支持的 JDBC 類型參見這個(gè)表格之后的“支持的 JDBC 類型”。 只需要在可能執(zhí)行插入、更新和刪除的且允許空值的列上指定 JDBC 類型。這是 JDBC 的要求而非 MyBatis 的要求。如果你直接面向 JDBC 編程,你需要對(duì)可以為空值的列指定這個(gè)類型。
typeHandler我們?cè)谇懊嬗懻撨^默認(rèn)的類型處理器。使用這個(gè)屬性,你可以覆蓋默認(rèn)的類型處理器。 這個(gè)屬性值是一個(gè)類型處理器實(shí)現(xiàn)類的全限定名,或者是類型別名。

- 常用例子展示

<resultMap  id="UsersMap" type="com.wang.test.demo.entity.User">
    <id property="id" column="id" jdbcType="INTEGER"/>
    <result property="username" column="username" jdbcType="VARCHAR"/>
    <result property="password" column="password" jdbcType="VARCHAR"/>
    <result property="role" column="role" jdbcType="VARCHAR"/>
    <result property="addTime" column="add_time" jdbcType="TIMESTAMP"/>
</resultMap>

五、association標(biāo)簽常用參數(shù)詳解

屬性描述
property映射到列結(jié)果的字段或?qū)傩?/strong>。如果用來匹配的 JavaBean 存在給定名字的屬性,那么它將會(huì)被使用。否則 MyBatis 將會(huì)尋找給定名稱的字段。 無論是哪一種情形,你都可以使用通常的點(diǎn)式分隔形式進(jìn)行復(fù)雜屬性導(dǎo)航。 人話為:你要一對(duì)一的實(shí)體類中的另一個(gè)實(shí)體類的名稱
javaType一個(gè) Java 類的完全限定名,或一個(gè)類型別名。 如果你映射到一個(gè) JavaBean,MyBatis 通??梢酝茢囝愋?。然而,如果你映射到的是 HashMap,那么你應(yīng)該明確地指定 javaType 來保證行為與期望的相一致。

例子演示

實(shí)體類演示

@Data
//書籍
public class Book {
    private String id;
    private String name;
    private String author;
    private Double price;
    private Integer del;
    private Date publishdate;
    private String info;
    //把出版社對(duì)象當(dāng)作屬性
    private Publisher pub;//------重點(diǎn)在這里一本書對(duì)應(yīng)一個(gè)出版社,這是一個(gè)出版社對(duì)象
}
@Data
//出版社
public class Publisher {
    private String id;
    private String name;
    private String phone;
    private String address;
}

- xml演示

<resultMap id="rMap_book" type="com.wang.test.demo.entity.Book">
	<!-- 主鍵  property為實(shí)體類屬性 column為數(shù)據(jù)庫字段 jdbcType為實(shí)體類對(duì)應(yīng)的jdbc類型-->
    <id property="id" column="b_id" jdbcType="VARCHAR"></id>
    <!-- 普通屬性  property為實(shí)體類屬性 column為數(shù)據(jù)庫字段  jdbcType為實(shí)體類對(duì)應(yīng)的jdbc類型-->
    <result property="name" column="b_name" jdbcType="VARCHAR"></result>
    <result property="author" column="author" jdbcType="VARCHAR"></result>
    <result property="price" column="price" jdbcType="VARCHAR"></result>
    <result property="del" column="del" jdbcType="NUMERIC"></result>
    <result property="publisherid" column="publisher_id" jdbcType="VARCHAR"></result>
    <result property="publishdate" column="publish_date" jdbcType="TIMESTAMP"></result>
    <!--一對(duì)一映射association property 為實(shí)體類book中的屬性名字 javaType為實(shí)體類屬性的類型 -->
    <association property="pub" javaType="com.wang.test.demo.entity.Publisher">
        <id property="id" column="p_id" jdbcType="VARCHAR"></id>
        <result property="name" column="name" jdbcType="VARCHAR"></result>
        <result property="phone" column="phone" jdbcType="VARCHAR"></result>
        <result property="address" column="address" jdbcType="VARCHAR"></result>
    </association>
</resultMap>

六、collection標(biāo)簽常用參數(shù)詳解

屬性描述
property映射到列結(jié)果的字段或?qū)傩?/strong>。如果用來匹配的 JavaBean 存在給定名字的屬性,那么它將會(huì)被使用。否則 MyBatis 將會(huì)尋找給定名稱的字段。 無論是哪一種情形,你都可以使用通常的點(diǎn)式分隔形式進(jìn)行復(fù)雜屬性導(dǎo)航。 人話為:你要一對(duì)一的實(shí)體類中的另一個(gè)實(shí)體類的名稱
javaType這里和一對(duì)一的表示不太一樣,這里一般是一對(duì)多的集合類型,如:list
ofType指定的這個(gè)一對(duì)多的集合的所存放的實(shí)體類的類型

例子演示

- 實(shí)體類演示

@Data
//班級(jí)類
public class Class {

    private String id;
    private String name;
    private List<Student> students;//----重點(diǎn)在這里,一個(gè)班級(jí)對(duì)應(yīng)多個(gè)學(xué)生

}
@Data
public class Student {

    private int id;
    private String name;
    private int age;
}

- xml演示

<resultMap id="rMap_class" type="com.wang.test.demo.entity.Class">
    <id property="id" column="id" jdbcType="VARCHAR"></id>
    <result property="name" column="name" jdbcType="VARCHAR"></result>
    <!--一對(duì)多映射用這個(gè)  ofTyp是一對(duì)多的集合的所存放的實(shí)體類  javaType實(shí)體類的屬性類型-->
    <collection property="students" ofType="com.wang.test.demo.entity.Student" javaType="list">
        <id property="id" column="id" jdbcType="INTEGER"></id>
        <result property="name" column="name" jdbcType="VARCHAR"></result>
        <result property="age" column="age" jdbcType="INTEGER"></result>
    </collection>
</resultMap>

七、jdbc Type與java Type對(duì)照表

JDBC TypeJava Type
CHARString
VARCHARString
LONGVARCHARString
NUMERICjava.math.BigDecimal
DECIMALjava.math.BigDecimal
BITboolean
BOOLEANboolean
TINYINTbyte
SMALLINTshort
INTEGERINTEGER
BIGINTlong
REALfloat
FLOATdouble
DOUBLEdouble
BINARYbyte[]
VARBINARYbyte[]
LONGVARBINARYbyte[]
DATEjava.sql.Date
TIMEjava.sql.Time
TIMESTAMPjava.sql.Timestamp
CLOBClob
BLOBBlob
ARRAYArray
DISTINCTmapping of underlying type
STRUCTStruct
REFRef
DATALINKjava.net.URL
附:表格來源

八、總結(jié)

這樣就對(duì)ResultMap具體參數(shù)進(jìn)行詳細(xì)的解釋,還有對(duì)association和collection標(biāo)簽的解釋和具體演示,希望能夠幫到你,一起學(xué)習(xí),如果用到收藏一下唄!!!!

到此這篇關(guān)于MyBatis中的ResultMap的association和collection標(biāo)簽詳解的文章就介紹到這了,更多相關(guān)MyBatis association和collection標(biāo)簽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot熱加載JAR包的實(shí)現(xiàn)方法

    Springboot熱加載JAR包的實(shí)現(xiàn)方法

    SpringBoot作為一個(gè)開發(fā)快速、部署方便的微服務(wù)框架,具有自動(dòng)配置、約定優(yōu)于配置的特點(diǎn),能夠極大地提高開發(fā)效率,它提供了豐富的擴(kuò)展點(diǎn),非常適合實(shí)現(xiàn)動(dòng)態(tài)加載Jar包的功能,本文將深入探討如何在SpringBoot應(yīng)用中實(shí)現(xiàn)動(dòng)態(tài)加載Jar包的方案,感興趣的朋友一起看看吧
    2024-04-04
  • idea中springboot整合mybatis找不到mapper接口的原因分析

    idea中springboot整合mybatis找不到mapper接口的原因分析

    這篇文章主要介紹了idea中springboot整合mybatis找不到mapper接口的原因分析及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring boot整合Mybatis實(shí)現(xiàn)級(jí)聯(lián)一對(duì)多CRUD操作的完整步驟

    Spring boot整合Mybatis實(shí)現(xiàn)級(jí)聯(lián)一對(duì)多CRUD操作的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring boot整合Mybatis實(shí)現(xiàn)級(jí)聯(lián)一對(duì)多CRUD操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié)

    最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié)

    這篇文章主要介紹了最新jsonwebtoken-jwt 0.12.3 基本使用小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • Springboot使用POI進(jìn)行excel文件的導(dǎo)出與下載方式

    Springboot使用POI進(jìn)行excel文件的導(dǎo)出與下載方式

    這篇文章主要介紹了Springboot使用POI進(jìn)行excel文件的導(dǎo)出與下載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java異常處理機(jī)制深入理解

    Java異常處理機(jī)制深入理解

    如果某個(gè)方法不能按照正常的途徑完成任務(wù),就可以通過另一種路徑退出方法。在這種情況下會(huì)拋出一個(gè)封裝了錯(cuò)誤信息的對(duì)象。此時(shí),這個(gè)方法會(huì)立刻退出同時(shí)不返回任何值。另外,調(diào)用這個(gè)方法的其他代碼也無法繼續(xù)執(zhí)行,異常處理機(jī)制會(huì)將代碼執(zhí)行交給異常處理器
    2022-01-01
  • Java8接口中引入default關(guān)鍵字的本質(zhì)原因詳析

    Java8接口中引入default關(guān)鍵字的本質(zhì)原因詳析

    Default方法是在java8中引入的關(guān)鍵字,也可稱為Virtual extension methods—虛擬擴(kuò)展方法,這篇文章主要給大家介紹了關(guān)于Java8接口中引入default關(guān)鍵字的本質(zhì)原因,需要的朋友可以參考下
    2022-01-01
  • Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例

    Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例

    這篇文章主要介紹了Redis緩存,泛型集合與json字符串的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 淺析Java集合及LIst接口

    淺析Java集合及LIst接口

    這篇文章主要介紹了Java集合及LIst接口,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring @Transactional注解的聲明式事務(wù)簡(jiǎn)化業(yè)務(wù)邏輯中的事務(wù)管理

    Spring @Transactional注解的聲明式事務(wù)簡(jiǎn)化業(yè)務(wù)邏輯中的事務(wù)管理

    這篇文章主要為大家介紹了Spring @Transactional注解的聲明式事務(wù)簡(jiǎn)化業(yè)務(wù)邏輯中的事務(wù)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10

最新評(píng)論

华阴市| 静安区| 蓝田县| 永济市| 皋兰县| 武鸣县| 宜州市| 霍城县| 泗水县| 濮阳县| 古浪县| 泽库县| 云南省| 长宁区| 沁阳市| 凌海市| 张家口市| 萨嘎县| 谢通门县| 勐海县| 乳源| 囊谦县| 岳西县| 广德县| 抚宁县| 凤山县| 静海县| 永嘉县| 旬邑县| 永嘉县| 呼玛县| 东乡族自治县| 汤原县| 威宁| 静海县| 开鲁县| 灵璧县| 星子县| 汉中市| 灵宝市| 鸡东县|