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

MyBatis3.X復(fù)雜Sql查詢的語(yǔ)句

 更新時(shí)間:2021年04月02日 15:40:37   作者:ruan_luqingnian  
這篇文章主要介紹了MyBatis3.X復(fù)雜Sql查詢的相關(guān)資料,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

MyBatis3.X復(fù)雜Sql查詢

MyBatis3.X的resultMap

1.Mybatis的sql語(yǔ)句返回的結(jié)果有兩種

  • resultType
  • 查詢出的字段在相應(yīng)的pojo中必須有和它相同的字段對(duì)應(yīng),或者基本數(shù)據(jù)類型
  • 適合簡(jiǎn)單查詢
  • resultMap

需要自定義字段,或者多表查詢,一對(duì)多等關(guān)系,比resultType更強(qiáng)大
適合復(fù)雜查詢

<resultMap id="VideoResultMap" type="Video">
	<!--
	id 指定查詢列列的唯⼀一標(biāo)示
	column 數(shù)據(jù)庫(kù)字段的名稱
	property pojo類的名稱
	-->
	<id column="id" property="id" jdbcType="INTEGER" />
	<result column="video_tile" property="title" jdbcType="VARCHAR" />
	<result column="summary" property="summary" jdbcType="VARCHAR" />
	<result column="cover_img" property="coverImg" jdbcType="VARCHAR" />
</resultMap>
<select id="selectBaseFieldByIdWithResultMap" resultMap="VideoResultMap">
	select id , title as video_tile, summary, cover_img from video where id = #{video_id}
</select>

ResultMap復(fù)雜對(duì)象一對(duì)一查詢結(jié)果映射之a(chǎn)ssociation

association:映射到POJO的某個(gè)復(fù)雜類型屬性,比如訂單order對(duì)象里面包含user對(duì)象

<!-- 名稱空間,需要保存全局唯一,最好是和dao層的Java接口一致
   可以映射sql語(yǔ)句到對(duì)應(yīng)的方法名參數(shù)和返回值
   mybatis是使用接口動(dòng)態(tài)代理
 -->
<mapper namespace="net.xiaotiancai.online_class.dao.VideoOrderMapper">
  <resultMap id="VideoOrderResultMap" type="VideoOrder">
    <id column="id" property="id"></id>
    <result column="user_id" property="userId"></result>
    <result column="out_trade_no" property="outTradeNo"></result>
    <result column="state" property="state"></result>
    <result column="total_fee" property="totalFee"></result>
    <result column="video_id" property="videoId"></result>
    <result column="video_title" property="videoTitle"></result>
    <!--
    配置屬性一對(duì)一
    property對(duì)應(yīng)videoOrder里面的User
    javaType對(duì)應(yīng)這個(gè)屬性的類型
    -->
    <association property="user" javaType="User">
      <id column="user_id" property="id"></id>
      <result column="name" property="name"></result>
      <result column="head_img" property="headImg"></result>
      <result column="phone" property="phone"></result>

    </association>
  </resultMap>
  <!--一對(duì)一訂單查詢,訂單內(nèi)部包含用戶屬性-->
  <select id="queryVideoOrderList" resultMap="VideoOrderResultMap">
    select
    o.id id,
    o.user_id,
    o.out_trade_no,
    o.state,
    o.total_fee,
    o.video_id,
    o.video_title,
    u.name,
    u.head_img,
    u.phone
    from video_order o left join user u on o.user_id = u.id
  </select>
</mapper>

代碼

// resultmap association關(guān)聯(lián)查詢
VideoOrderMapper videoOrderMapper =sqlSession.getMapper(VideoOrderMapper.class);
List<VideoOrder> videoOrderList = videoOrderMapper.queryVideoOrderList();
System.out.println(videoOrderList.toString());

ResultMap復(fù)雜對(duì)象一對(duì)多查詢結(jié)果映射之collection

collection: 一對(duì)多查詢結(jié)果查詢映射,比如user有多個(gè)訂單

 <resultMap id="UserOrderResultMap" type="User">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="headImg" column="head_img"/>
    <result property="phone" column="phone"/>
    <!--
    property 填寫pojo類中集合類屬性的名稱
    ofType 集合⾥里里⾯面的pojo對(duì)象
    -->
    <collection property="videoOrderList" ofType="VideoOrder">
      <!--配置主鍵,管理理order的唯⼀一標(biāo)識(shí)-->
      <id column="order_id" property="id"/>
      <result column="user_id" property="userId"/>
      <result column="out_trade_no" property="outTradeNo"/>
      <result column="state" property="state"/>
      <result column="total_fee" property="totalFee"/>
      <result column="video_id" property="videoId"/>
      <result column="video_title" property="videoTitle"/>
      <result column="video_img" property="videoImg"/>
    </collection>
  </resultMap>
  <select id="queryUserOrder" resultMap="UserOrderResultMap">
    select
    u.id,
    u.name,
    u.head_img,
    u.phone,
    o.id order_id,
    o.out_trade_no,
    o.user_id,
    o.state,
    o.total_fee,
    o.video_id,
    o.video_title
    from user u left join video_order o on u.id = o.user_id
  </select>

代碼

// resultmap association關(guān)聯(lián)查詢
VideoOrderMapper videoOrderMapper =sqlSession.getMapper(VideoOrderMapper.class);
//resultmap collection測(cè)試
List<User> userList = videoOrderMapper.queryUserOrder();
System.out.println(userList.toString());

Mybatis3.X ResultMap復(fù)雜對(duì)象查詢總結(jié)

總結(jié)ResultMap的復(fù)雜對(duì)象查詢

  • association映射的是一個(gè)pojo類,處理一對(duì)一的關(guān)聯(lián)關(guān)系。
  • collection映射的一個(gè)集合列表,處理的是一對(duì)多的關(guān)聯(lián)關(guān)系。
  • 模板
<!--column不做限制,可以為任意表的字段,而property須為type定義的pojo屬性-->
<resultMap id=“唯一的標(biāo)識(shí)”type=“映射的pojo對(duì)象">
	<id column="表的主鍵字段,或查詢語(yǔ)句中的別名字段”jdbcrype="字段類型”property=“映射pojo對(duì)象的主鍵屬性"/>
	<result column="表的一個(gè)字段”jdbcrype="字段類型”property=“映射到pojo對(duì)象的一個(gè)屬性"/>
	<association property="pojo的一個(gè)對(duì)象屬性”javarype="pojo關(guān)聯(lián)的pojo對(duì)象">
  <id column="關(guān)聯(lián)pojo對(duì)象對(duì)應(yīng)表的主鍵字段”jdbcrype="字段類型”property="關(guān)聯(lián)pojo對(duì)象的屬性"/>
	<result column="表的字段”jdbcrype="字段類型”property="關(guān)聯(lián)pojo對(duì)象的屬性"/>
</association>
<!--集合中的property 需要為oftype定義的pojo對(duì)象的屬性-->
<collection property="pojo的集合屬性名稱”ofType="集合中單個(gè)的pojo對(duì)象類型">
 	<id column="集合中pojo對(duì)象對(duì)應(yīng)在表的主鍵字段”jdbcrype="字段類型”property=“集合中pojo對(duì)象的主鍵屬性”/>
	<result column="任意表的字段”jdbcrype="字段類型”property="集合中的pojo對(duì)象的屬性”/>
</collection>
</resultMap>

到此這篇關(guān)于MyBatis3.X復(fù)雜Sql查詢的文章就介紹到這了,更多相關(guān)MyBatis復(fù)雜Sql查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決java-jar報(bào)錯(cuò):xxx.jar 中沒(méi)有主清單屬性的方法

    解決java-jar報(bào)錯(cuò):xxx.jar 中沒(méi)有主清單屬性的方法

    在使用 java -jar xxx.jar 命令運(yùn)行 Java 應(yīng)用程序時(shí),遇到了以下錯(cuò)誤:xxx.jar 中沒(méi)有主清單屬性,這個(gè)錯(cuò)誤表示 JAR 文件缺少必要的啟動(dòng)信息,本文將介紹該錯(cuò)誤的原因以及如何通過(guò)修改 pom.xml 文件來(lái)解決,需要的朋友可以參考下
    2024-11-11
  • Java去掉字符串最后一個(gè)逗號(hào)的方法

    Java去掉字符串最后一個(gè)逗號(hào)的方法

    Java中去掉字符串的最后一個(gè)逗號(hào)有多種實(shí)現(xiàn)方法,不同的方法適用于不同的場(chǎng)景,本文通過(guò)實(shí)例代碼介紹Java去掉字符串最后一個(gè)逗號(hào)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2023-12-12
  • Spring Boot集成教程之異步調(diào)用Async

    Spring Boot集成教程之異步調(diào)用Async

    在項(xiàng)目中,當(dāng)訪問(wèn)其他人的接口較慢或者做耗時(shí)任務(wù)時(shí),不想程序一直卡在耗時(shí)任務(wù)上,想程序能夠并行執(zhí)行,我們可以使用多線程來(lái)并行的處理任務(wù),也可以使用spring提供的異步處理方式@Async。需要的朋友們下面來(lái)一起看看吧。
    2018-03-03
  • java 同步器SynchronousQueue詳解及實(shí)例

    java 同步器SynchronousQueue詳解及實(shí)例

    這篇文章主要介紹了java 同步器SynchronousQueue詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • SpringBoot 集成Kaptcha實(shí)現(xiàn)驗(yàn)證碼功能實(shí)例詳解

    SpringBoot 集成Kaptcha實(shí)現(xiàn)驗(yàn)證碼功能實(shí)例詳解

    在一個(gè)web應(yīng)用中驗(yàn)證碼是一個(gè)常見(jiàn)的元素。今天給大家介紹一下kaptcha的和springboot一起使用的簡(jiǎn)單例子。感興趣的朋友參考下吧
    2017-08-08
  • Java讀取網(wǎng)頁(yè)內(nèi)容并下載圖片的實(shí)例

    Java讀取網(wǎng)頁(yè)內(nèi)容并下載圖片的實(shí)例

    這篇文章主要介紹了Java讀取網(wǎng)頁(yè)內(nèi)容并下載圖片的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • 教你怎么用Idea打包jar包

    教你怎么用Idea打包jar包

    這篇文章主要介紹了教你怎么用Idea打包jar包,文中有非常詳細(xì)的代碼示例,對(duì)剛開(kāi)始使用IDEA的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • 教你輕松制作java音樂(lè)播放器

    教你輕松制作java音樂(lè)播放器

    這篇文章主要介紹了如何編寫屬于自己的java音樂(lè)播放器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • mybatis postgresql 批量刪除操作方法

    mybatis postgresql 批量刪除操作方法

    PostgreSQL是一種特性非常齊全的自由軟件的對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS),這篇文章主要介紹了mybatis postgresql 批量刪除操作,需要的朋友可以參考下
    2020-02-02
  • Logback日志存放路徑不統(tǒng)一解決方案

    Logback日志存放路徑不統(tǒng)一解決方案

    這篇文章主要介紹了Logback日志存放路徑不統(tǒng)一解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論

汽车| 五大连池市| 韶山市| 清新县| 大名县| 上杭县| 蓬安县| 津南区| 孟州市| 雷山县| 天气| 福建省| 漳州市| 沾化县| 修武县| 石屏县| 青铜峡市| 蕉岭县| 沿河| 保德县| 松阳县| 乐平市| 临桂县| 宜君县| 静宁县| 吴江市| 渝北区| 武义县| 泗阳县| 温宿县| 武冈市| 铜山县| 鹤庆县| 弥勒县| 建湖县| 塔城市| 阿图什市| 长寿区| 包头市| 绿春县| 阜宁县|