国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MyBatis之ResultMap的Association和Collection標簽詳解

數據庫 其他數據庫
我們希望每個數據庫都具備良好的第三范式或 BCNF 范式,可惜它們并不都是那樣。如果能有一種數據庫映射模式,完美適配所有的應用程序,那就太好了,但可惜也沒有。而 ResultMap 就是 MyBatis 對這個問題的答案。

一、前言

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

二、ResultMap 的屬性列表

屬性

描述

id

當前命名空間中的一個唯一標識,用于標識一個結果映射。

type

類的完全限定名, 或者一個類型別名(關于內置的類型別名,可以參考上面的表格)。

autoMapping

如果設置這個屬性,MyBatis 將會為本結果映射開啟或者關閉自動映射。這個屬性會覆蓋全局的屬性 autoMappingBehavior。默認值:未設置(unset)。

extends

可以繼承其他resultMap的一些寫好的屬性

三、resultMap標簽介紹

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

四、id & result標簽參數詳解

屬性

描述

property

映射到列結果的字段或屬性。如果 JavaBean 有這個名字的屬性(property),會先使用該屬性。否則 MyBatis 將會尋找給定名稱的字段(field)。無論是哪一種情形,你都可以使用常見的點式分隔形式進行復雜屬性導航。人話為:就是你的Java實體類

column

數據庫中的列名,或者是列的別名。一般情況下,這和傳遞給 resultSet.getString(columnName) 方法的參數一樣。

javaType

一個 Java 類的全限定名,或一個類型別名(關于內置的類型別名,可以參考上面的表格)。如果你映射到一個 JavaBean,MyBatis 通常可以推斷類型。然而,如果你映射到的是 HashMap,那么你應該明確地指定 javaType 來保證行為與期望的相一致。

jdbcType

JDBC 類型,所支持的 JDBC 類型參見這個表格之后的“支持的 JDBC 類型”。只需要在可能執行插入、更新和刪除的且允許空值的列上指定 JDBC 類型。這是 JDBC 的要求而非 MyBatis 的要求。如果你直接面向 JDBC 編程,你需要對可以為空值的列指定這個類型。

typeHandler

我們在前面討論過默認的類型處理器。使用這個屬性,你可以覆蓋默認的類型處理器。這個屬性值是一個類型處理器實現類的全限定名,或者是類型別名。

常用例子展示

<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標簽常用參數詳解

屬性

描述

property

映射到列結果的字段或屬性。如果用來匹配的 JavaBean 存在給定名字的屬性,那么它將會被使用。否則 MyBatis 將會尋找給定名稱的字段。無論是哪一種情形,你都可以使用通常的點式分隔形式進行復雜屬性導航。人話為:你要一對一的實體類中的另一個實體類的名稱

javaType

一個 Java 類的完全限定名,或一個類型別名。 如果你映射到一個 JavaBean,MyBatis 通常可以推斷類型。然而,如果你映射到的是 HashMap,那么你應該明確地指定 javaType 來保證行為與期望的相一致。

例子演示

  • 實體類演示
@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;
//把出版社對象當作屬性
private Publisher pub;//------重點在這里一本書對應一個出版社,這是一個出版社對象
}
@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為實體類屬性 column為數據庫字段 jdbcType為實體類對應的jdbc類型-->
<id property="id" column="b_id" jdbcType="VARCHAR"></id>
<!-- 普通屬性 property為實體類屬性 column為數據庫字段 jdbcType為實體類對應的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>
<!--一對一映射association property 為實體類book中的屬性名字 javaType為實體類屬性的類型 -->
<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標簽常用參數詳解

屬性

描述

property

映射到列結果的字段或屬性。如果用來匹配的 JavaBean 存在給定名字的屬性,那么它將會被使用。否則 MyBatis 將會尋找給定名稱的字段。無論是哪一種情形,你都可以使用通常的點式分隔形式進行復雜屬性導航。人話為:你要一對一的實體類中的另一個實體類的名稱

javaType

這里和一對一的表示不太一樣,這里一般是一對多的集合類型,如:list

ofType

指定的這個一對多的集合的所存放的實體類的類型

例子演示

實體類演示

@Data
//班級類
public class Class {

private String id;
private String name;
private List<Student> students;//----重點在這里,一個班級對應多個學生

}
@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>
<!--一對多映射用這個 ofTyp是一對多的集合的所存放的實體類 javaType實體類的屬性類型-->
<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對照表

JDBC Type

Java Type

CHAR

String

VARCHAR

String

LONGVARCHAR

String

NUMERIC

java.math.BigDecimal

DECIMAL

java.math.BigDecimal

BIT

boolean

BOOLEAN

boolean

TINYINT

byte

SMALLINT

short

INTEGER

INTEGER

BIGINT

long

REAL

float

FLOAT

double

DOUBLE

double

BINARY

byte[]

VARBINARY

byte[]

LONGVARBINARY

byte[]

DATE

java.sql.Date

TIME

java.sql.Time

TIMESTAMP

java.sql.Timestamp

CLOB

Clob

BLOB

Blob

ARRAY

Array

DISTINCT

mapping of underlying type

STRUCT

Struct

REF

Ref

DATALINK

java.net.URL

八、總結

這樣就對ResultMap具體參數進行詳細的解釋,還有對association和collection標簽的解釋和具體演示,希望能夠幫到你。

責任編輯:姜華 來源: 小王博客基地
相關推薦

2009-06-25 15:20:28

CollectionMap

2021-06-28 07:09:24

MybatisresultMapJava

2024-04-19 08:23:06

2010-08-24 10:01:05

DIV

2009-07-15 11:43:13

<iterate>標簽

2023-03-29 23:23:00

MyBatis參數框架

2023-09-27 09:18:35

2009-07-07 17:34:15

collectionJDK5.0

2016-12-05 13:35:02

C語言數組指針

2011-03-02 11:28:28

vsftpd配置

2020-12-18 08:03:00

插件MyBatis Executor

2021-01-14 05:16:09

MyBatis動態代理

2012-03-19 16:27:05

JavaHibernate

2009-07-22 10:03:11

iBATIS Resu

2023-06-09 08:16:09

GolangStruct Tag

2024-12-20 16:49:15

MyBatis開發代碼

2011-05-26 08:36:07

JDKJava

2023-03-13 07:35:44

MyBatis分庫分表

2013-10-31 13:37:07

CloudaAPI手冊

2009-07-16 13:50:31

ibatisResultMap
點贊
收藏

51CTO技術棧公眾號

蓝色福利精品导航| 色豆豆成人网| 欧美国产91| 在线观看91精品国产麻豆| 亚洲高清视频一区二区| 天堂久久午夜av| 午夜国产精品影院在线观看| 久久99九九| 欧美日韩伦理一区二区| 精品久久久久久亚洲国产300| 亚洲永久激情精品| 日韩成人a**站| 日韩中文在线中文网三级| 国产91av在线| 久久综合之合合综合久久| 中文字幕在线不卡一区| 国产四区在线观看| 天堂成人国产精品一区| 国产日本欧美在线观看 | 日本一区二区成人在线| 国产精品三级一区二区| 日韩国产欧美在线视频| 久久综合福利| 国产色综合网| 国产免费一区| 日韩欧美伦理| 久久久久久网站| 日韩精品第一| 亚洲免费小视频| 三级外国片在线观看视频| 成人国产精品免费观看动漫| 一级黄色免费在线观看| 天堂成人免费av电影一区| 国产精品一区视频网站| 男人插女人欧美| 中文字幕av一区二区三区免费看| 中文字幕成人一区| 久久99国产乱子伦精品免费| 少妇高潮流白浆| 国产精品一区二区久久不卡| 日韩成人在线资源| 国产成人精品在线看| 一区二区在线不卡| 久久久综合网| 日韩hmxxxx| 日韩一级视频| 91av国产在线| 999国产精品永久免费视频app| 日本三级韩国三级久久| 免费在线观看的毛片| 亚洲最快最全在线视频| 日韩福利一区二区| 91麻豆精品国产91久久久资源速度 | 国产在线精品视频| 久久免费视频3| 国产亚洲一区二区三区在线观看| 奇米影视四色在线| 亚洲国产精品天堂| 精产国品自在线www| 欧美大片国产精品| 91丨精品丨国产| 久久久久久这里只有精品| 清纯唯美日韩| 亚洲 国产 日韩 综合一区| 91麻豆蜜桃一区二区三区| 欧美乱大交xxxxx| 99视频精品全部免费在线视频| 国产不卡一区二区在线观看| 七七婷婷婷婷精品国产| 天天干天天综合| 3atv一区二区三区| 婷婷精品久久久久久久久久不卡| 国产精品吹潮在线观看| 精彩视频一区二区| 色av一区二区三区| 日韩精品高清在线观看| 日韩影视高清在线观看| 一区二区三区四区欧美日韩| 富二代精品短视频| 亚洲成人毛片| 日本一区二区精品| 婷婷国产v国产偷v亚洲高清| 亚洲精品777| 日韩精品伦理第一区| 亚洲视频一二区| 岛国精品在线| 青草视频在线观看视频| 91精品国产91热久久久做人人| 6080国产精品一区二区| 最近在线中文字幕| 亚洲动漫在线观看| 成人免费看黄网址| 一区二区三区欧美日韩| 欧美日韩破处| 91p在线观看| 国产精品高潮呻吟久久av野狼| 97aⅴ精品视频一二三区| 欧美成免费一区二区视频| 成年在线观看视频| 国产精品成人免费在线| 久久精品视频免费看| 成人免费福利在线| 中文字幕一区二区三区视频| 国产理论片免费观看| 久久久久久久久久国产精品| 一本大道av伊人久久综合| 色综合天天综合给合国产| 中文字幕在线不卡一区二区三区| 国产精品流白浆在线观看| 日韩精品一区二区三区不卡| 欧美在线性爱视频| 亚洲国产成人一区| 99国产精品99久久久久久粉嫩| 91大神精品| 成人午夜影院| 五月丁香综合缴情六月小说| 国产精品99一区二区三| 国产一区二区av在线| 精品久久久久久久无码| 欧美精品18videos性欧| 2017欧美狠狠色| 狠狠干成人综合网| 1313精品午夜理伦电影| 黄色三级视频在线| 九九热r在线视频精品| 亚洲三级小视频| 午夜免费一区| 99re久久| 黄色大片在线播放| 国产日产欧美视频| 我的公把我弄高潮了视频| 国产日本欧美一区二区三区在线| 日韩欧美自拍偷拍| 国产99久久久国产精品潘金网站| 亚洲第一伊人| caoporn免费在线| 免费日韩视频在线观看| 精品午夜一区二区| 欧美成人免费va影院高清| 欧美精品在线一区二区三区| 国产精品美女久久久久久久| 成人性生交大合| 麻豆精品一区二区三区| 日本视频中文字幕一区二区三区| 蜜桃精品wwwmitaows| 亚洲精品成人久久久998| 国产伦理一区二区三区| 国产精品99久久久久久久久久久久| 国产suv精品一区二区三区88区| 国产高清在线不卡| 免费观看黄色的网站| 国产免费视频| 国产精品一区二区精品视频观看| 蜜桃一区二区| 情侣黄网站免费看| 丰满少妇在线观看| www.成人影院| 天天影视天天精品| 成人动漫在线一区| 色哟哟日韩精品| 欧美亚洲另类激情另类| www日韩av| 日韩av不卡播放| 偷拍自拍在线| 精品美女一区| 亚洲小说区图片区| 国产人成一区二区三区影院| 欧美在线性视频| 国产成人av一区二区三区| 在线成人性视频| 久艹视频在线免费观看| 污视频免费在线观看| 日韩欧美久久| 国产综合婷婷| 91麻豆精品视频| 亚洲第一国产精品| 国产日韩欧美91| 在线观看免费视频高清游戏推荐| 无人区在线高清完整免费版 一区二| 亚洲国产国产亚洲一二三| 2020最新国产精品| 黄色亚洲免费| 五月婷婷久久丁香| 久久91精品国产91久久跳| 欧美日韩精品综合| 欧美孕妇孕交| 综合天天久久| www激情久久| 4438x成人网最大色成网站| 国产精品视频大全| 成人毛片一区二区| 成人在线播放| 亚洲色图88| 欧美日韩色婷婷| 日本亚洲欧洲色| 国产成人久久777777| 日韩另类视频| 久久久综合精品| 久久在线视频在线| 成年人视频网站免费|