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

Mybatis?resultMap標(biāo)簽繼承、復(fù)用、嵌套方式

 更新時(shí)間:2022年03月10日 14:50:09   作者:王二小丷  
這篇文章主要介紹了Mybatis?resultMap標(biāo)簽繼承、復(fù)用、嵌套方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

resultMap標(biāo)簽繼承、復(fù)用、嵌套

記錄演示 Mybatis 中 resultMap 標(biāo)簽繼承、復(fù)用(包括跨文件)以及多層嵌套的使用方法,

  • 繼承: 繼承已存在的 resultMap 標(biāo)簽進(jìn)行擴(kuò)展
  • 復(fù)用: 跨mapper文件引用現(xiàn)存的 resultMap 標(biāo)簽
  • 嵌套: 多層嵌套的JavaBean與 resultMap 映射方法

定義表與實(shí)體類

創(chuàng)建三個(gè)表 group member score

score 與 member 一對(duì)一,通過(guò) score.id 關(guān)聯(lián)

group 與 member 一對(duì)多,通過(guò) group.id 關(guān)聯(lián)

create table `score` (
? ? `id` int comment '主鍵',
? ? `math` float comment '數(shù)學(xué)成績(jī)',
? ? `history` float comment '歷史成績(jī)',
? ? primary key (`id`)
)
create table `member` (
? ? `id` int comment '主鍵',
? ? `name` varchar comment '姓名',
? ? `group_id` int comment '所屬組group表id',
? ? `score_id` int comment '成績(jī)Score表id',
? ? primary key (`id`)
)
create table `group` (
? ? `id` int comment '主鍵',
? ? `name` varchar comment '組名',
? ? primary key (`id`)
)

實(shí)體類

創(chuàng)建三個(gè)實(shí)體類 Group Member Score

Score 類的對(duì)象是 Member 類的成員變量

Member 類的對(duì)象集合是 Group 類的成員變量

/** 成績(jī)類 */
public class Score {
? ? private Integer id;
? ? /** 數(shù)學(xué)成績(jī) */
? ? private Float math;
? ? /** 歷史成績(jī) */
? ? private Float hitory;
? ? ...getter And setter...
}
/** 成員類 */
public class Member {
? ? private Integer id;
? ? /** 姓名 */
? ? private String name;
? ? /** 分?jǐn)?shù)對(duì)象 */
? ? private Score score;
? ? ...getter And setter...
}
/** 組類 */
public class Group {
? ? private Integer id;
? ? /** 組名 */
? ? private String groupName;
? ? /** 成員 */
? ? private List<Member> members;
? ? ...getter And setter...
}

定義與表映射的 resultMap

在 BeanMapper.xml 定義最基本的與數(shù)據(jù)庫(kù)表字段映射的 resultMap 標(biāo)簽

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.BeanMapper">
? ? <!-- Score實(shí)體類映射 -->
? ? <resultMap id="scoreMap" type="com.example.Score">
? ? ? ? <id column="id" jdbcType="INTEGER" property="id" />
? ? ? ? <result column="math" jdbcType="FLOAT" property="math" />
? ? ? ? <result column="history" jdbcType="FLOAT" property="history" />
? ? </resultMap>
? ? <!-- Member實(shí)體類映射 -->
? ? <resultMap id="memberMap" type="com.example.Member">
? ? ? ? <id column="id" jdbcType="INTEGER" property="id" />
? ? ? ? <result column="name" jdbcType="VARCHAR" property="name" />
? ? </resultMap>
? ? <!-- Group實(shí)體類映射 -->
? ? <resultMap id="groupMap" type="com.example.Group">
? ? ? ? <id column="id" jdbcType="INTEGER" property="id" />
? ? ? ? <result column="name" jdbcType="VARCHAR" property="groupName" />
? ? </resultMap>
</mapper>

繼承、復(fù)用、嵌套

創(chuàng)建 DemoMapper.xml,演示標(biāo)簽的繼承、復(fù)用、嵌套

復(fù)用現(xiàn)存標(biāo)簽時(shí)若位于相同mapper文件可直接使用 resultMap 的 id 屬性引用,跨文件時(shí)需要指定 namespace 屬性才可正常引用

  • extends: 繼承,可繼承其他 resultMap 并加以擴(kuò)展
  • association: 復(fù)用現(xiàn)存的 resultMap,適用于對(duì)應(yīng)的屬性為單JavaBean時(shí),使用 javaType 指定Java類型
  • collection: 復(fù)用現(xiàn)存的 resultMap,適用于對(duì)應(yīng)的屬性為JavaBean集合時(shí),使用 ofType 指定Java類型
  • columnPrefix: 只將該屬性指定前綴的屬性賦值給當(dāng)前 resultMap,存在多層嵌套時(shí)每進(jìn)入一層就會(huì)將本層前綴截取掉。

如下面的mapper文件中,外層的 fullMemberMap 前綴為 member_,經(jīng)本次篩選 member_score_id -> score_id,

內(nèi)層的 scoreMap 前綴為 score_,經(jīng)本次篩選 score_id -> id,最終被賦值給 Score.id

所以只有形如 member_score_id 的字段才會(huì)最終進(jìn)入 scoreMap 的取值范圍中

若是不復(fù)用只是單純嵌套,則可以直接將三個(gè)類寫在一個(gè) resultMap 標(biāo)簽內(nèi)實(shí)現(xiàn)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.DemoMapper">
? ? <!-- extends: 繼承 -->
? ? <resultMap id="fullMemberMap" extends="com.example.BeanMapper.memberMap" type="com.example.Member">
? ? ? ? <!-- association: 復(fù)用已存在的resultMap,單JavaBean屬性時(shí)使用
? ? ? ? ? ? ? ? ? ? ? ? 使用javaType屬性指定JavaBean的類型
? ? ? ? ? ? ? ? ? ? ? ? 跨文件引用需指定namespace -->
? ? ? ? <!-- columnPrefix: 只從 score_ 開(kāi)頭的字段為當(dāng)前resultMap取值 -->
? ? ? ? <association ?property="score" resultMap="com.example.BeanMapper.scoreMap" javaType="com.example.Score" columnPrefix="score_" />
? ? </resultMap>
? ??
? ? <resultMap id="fullGroupMap" extends="com.example.BeanMapper.groupMap" type="com.example.Group">
? ? ? ? <!-- collection: 復(fù)用已存在的resultMap,JavaBean集合屬性時(shí)使用
? ? ? ? ? ? ? ? ? ? ? ? 使用ofType屬性指定JavaBean的類型
? ? ? ? ? ? ? ? ? ? ? ? 同文件引用無(wú)需指定namespace -->
? ? ? ? <!-- columnPrefix: 只從 member_ 開(kāi)頭的字段為當(dāng)前resultMap取值
? ? ? ? ? ? ? ? ? ? ? ? 進(jìn)入fullMemberMap內(nèi)嵌套的scoreMap時(shí)前綴 member_ 會(huì)被去除,即 member_score_id 字段才能被scoreMap正確接收 -->
? ? ? ? <collection property="members" ofType="com.example.Member" resultMap="fullMemberMap" columnPrefix="member_"/>
? ? </resultMap>
? ? <!-- 直接引用最終的resultMap,并根據(jù)columnPrefix屬性設(shè)置的前綴為各個(gè)字段指定不同的別名 -->
? ? <select id="selectGroupById" parameterType="java.lang.Integer" resultMap="fullGroupMap">
? ? ? ? select g.id, g.name,
? ? ? ? ? ? ? ?m.id member_id, m.name member_name,
? ? ? ? ? ? ? ?s.id member_score_id, s.math member_score_math, s.history member_score_history
? ? ? ? ? from `group` g
? ? ? ? ? ? left join `member` m on m.group_id = g.id
? ? ? ? ? ? left join `score` s on s.id = m.score_id
? ? ? ? ? where g.id = #{id,jdbcType=INTEGER}
? ? </select>
</mapper>

使用resultMap需要注意的地方

今天主要還是根據(jù)需求在進(jìn)行sql的編寫 ,在mybatis里面進(jìn)行復(fù)查和復(fù)用的時(shí)候一定要去看所對(duì)應(yīng)的有沒(méi)有這個(gè)類 ,今天弄了幾個(gè)dto,還有時(shí)間戳的轉(zhuǎn)換,java里面的時(shí)間戳是以毫秒來(lái)進(jìn)行計(jì)算的。

所以說(shuō)在專用mysql的時(shí)候要注意

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實(shí)例化的幾種方法總結(jié)

    Java實(shí)例化的幾種方法總結(jié)

    這篇文章主要介紹了Java實(shí)例化的幾種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Idea如何去除Mapper警告方法解析

    Idea如何去除Mapper警告方法解析

    這篇文章主要介紹了Idea如何去除Mapper 警告的方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java中MapStruct的使用詳解

    Java中MapStruct的使用詳解

    這篇文章主要介紹了Java中MapStruct的使用詳解,mapstruct,全稱是org.mapstruct.Mapper, 是將接口或抽象類標(biāo)記為映射器,并通過(guò)MapStruct為這個(gè)接口或者抽象類生成一個(gè)實(shí)現(xiàn)類,大大簡(jiǎn)化了Java bean類型之間轉(zhuǎn)換,需要的朋友可以參考下
    2023-09-09
  • java 集合----Map、Collection

    java 集合----Map、Collection

    HashSet 的 add() 方法添加集合元素時(shí)實(shí)際上轉(zhuǎn)變?yōu)檎{(diào)用 HashMap 的 put()方法來(lái)添加 key-value 對(duì)。HashMap 的 put() 方法.hashCode() 判斷返回值相等,如果返回值相等則再通過(guò) equals 比較也返回 true,最終認(rèn)為key對(duì)象是相等的已經(jīng)在HashMap中存在。
    2016-04-04
  • Java中計(jì)算集合中元素的出現(xiàn)次數(shù)統(tǒng)計(jì)

    Java中計(jì)算集合中元素的出現(xiàn)次數(shù)統(tǒng)計(jì)

    本文主要介紹了Java中計(jì)算集合中元素的出現(xiàn)次數(shù)統(tǒng)計(jì),使用Collections類配合HashMap來(lái)統(tǒng)計(jì)和java lamb 計(jì)算這兩種方式,具有一定的參考價(jià)值,感興趣可以了解一下
    2024-02-02
  • 十分鐘速懂java知識(shí)點(diǎn) System類

    十分鐘速懂java知識(shí)點(diǎn) System類

    這篇文章主要介紹了java知識(shí)點(diǎn)System類,根據(jù)一次面試總結(jié)的,可以十分鐘速懂System類,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Java優(yōu)先隊(duì)列(PriorityQueue)重寫compare操作

    Java優(yōu)先隊(duì)列(PriorityQueue)重寫compare操作

    這篇文章主要介紹了Java優(yōu)先隊(duì)列(PriorityQueue)重寫compare操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • SpringBoot整合阿里云開(kāi)通短信服務(wù)詳解

    SpringBoot整合阿里云開(kāi)通短信服務(wù)詳解

    這篇文章主要介紹了如何利用SpringBoot整合阿里云實(shí)現(xiàn)短信服務(wù)的開(kāi)通,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-03-03
  • CGLIB代理的使用與原理解析

    CGLIB代理的使用與原理解析

    這篇文章主要介紹了CGLIB代理的使用與原理解析,靜態(tài)代理和JDK 代理模式都要求目標(biāo)對(duì)象是實(shí)現(xiàn)一個(gè)接口,但是有時(shí)候目標(biāo)對(duì)象只是一個(gè)單獨(dú)的對(duì)象,并沒(méi)有實(shí)現(xiàn)任何的接口,這個(gè)時(shí)候可使用目標(biāo)對(duì)象子類來(lái)實(shí)現(xiàn)代理,這就是Cglib代理,需要的朋友可以參考下
    2023-09-09
  • springboot+redis實(shí)現(xiàn)簡(jiǎn)單的熱搜功能

    springboot+redis實(shí)現(xiàn)簡(jiǎn)單的熱搜功能

    這篇文章主要介紹了springboot+redis實(shí)現(xiàn)一個(gè)簡(jiǎn)單的熱搜功能,通過(guò)代碼介紹了過(guò)濾不雅文字的過(guò)濾器,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

吉安市| 涡阳县| 河东区| 浦北县| 阿合奇县| 黄大仙区| 鄯善县| 盐边县| 义乌市| 南汇区| 嘉兴市| 巩义市| 惠东县| 惠东县| 玉门市| 武冈市| 海口市| 沛县| 龙里县| 玉树县| 土默特左旗| 聊城市| 本溪| 安多县| 黄大仙区| 获嘉县| 宁夏| 石屏县| 金山区| 五华县| 平远县| 台江县| 新竹市| 临汾市| 临城县| 团风县| 英吉沙县| 和政县| 蓬溪县| 庆城县| 名山县|