亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis3.X復雜Sql查詢的語句

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

MyBatis3.X復雜Sql查詢

MyBatis3.X的resultMap

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

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

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

<resultMap id="VideoResultMap" type="Video">
	<!--
	id 指定查詢列列的唯⼀一標示
	column 數(shù)據(jù)庫字段的名稱
	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復雜對象一對一查詢結(jié)果映射之a(chǎn)ssociation

association:映射到POJO的某個復雜類型屬性,比如訂單order對象里面包含user對象

<!-- 名稱空間,需要保存全局唯一,最好是和dao層的Java接口一致
   可以映射sql語句到對應的方法名參數(shù)和返回值
   mybatis是使用接口動態(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>
    <!--
    配置屬性一對一
    property對應videoOrder里面的User
    javaType對應這個屬性的類型
    -->
    <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>
  <!--一對一訂單查詢,訂單內(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復雜對象一對多查詢結(jié)果映射之collection

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

 <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對象
    -->
    <collection property="videoOrderList" ofType="VideoOrder">
      <!--配置主鍵,管理理order的唯⼀一標識-->
      <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測試
List<User> userList = videoOrderMapper.queryUserOrder();
System.out.println(userList.toString());

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

總結(jié)ResultMap的復雜對象查詢

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

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

相關(guān)文章

  • springboot快速搭建ftpserver服務端的詳細步驟

    springboot快速搭建ftpserver服務端的詳細步驟

    基于springboot,使用ftpserver快速搭建一個FTP服務端,搭建過程很簡單,我們把過程分成4個步驟,一分鐘內(nèi)快速完成構(gòu)建,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 詳解SpringMVC中的四種跳轉(zhuǎn)方式、視圖解析器問題

    詳解SpringMVC中的四種跳轉(zhuǎn)方式、視圖解析器問題

    這篇文章主要介紹了SpringMVC的四種跳轉(zhuǎn)方式、視圖解析器,springmvc核心配置文件和視圖解析器的使用,添加視圖解析器,通過案例講解四種跳轉(zhuǎn)方式,需要的朋友可以參考下
    2022-10-10
  • 新建Maven工程出現(xiàn)Process?Terminated的問題解決

    新建Maven工程出現(xiàn)Process?Terminated的問題解決

    當Maven出現(xiàn)"Process terminated"錯誤時,這通常是由于配置文件或路徑錯誤導致的,本文主要介紹了新建Maven工程出現(xiàn)Process?Terminated的問題解決,感興趣的可以了解一下
    2024-04-04
  • Java設(shè)計模式:組合模式

    Java設(shè)計模式:組合模式

    這篇文章主要介紹了快速理解Java設(shè)計模式中的組合模式,具有一定參考價值,需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-09-09
  • java解析Excel文件的方法實例詳解

    java解析Excel文件的方法實例詳解

    在日常工作中,我們常常會進行文件讀寫操作,除去我們最常用的純文本文件讀寫,更多時候我們需要對Excel中的數(shù)據(jù)進行讀取操作,下面這篇文章主要給大家介紹了關(guān)于java解析Excel文件的方法,需要的朋友可以參考下
    2022-06-06
  • SpringBoot整合mybatis-plus實現(xiàn)分頁查詢功能

    SpringBoot整合mybatis-plus實現(xiàn)分頁查詢功能

    這篇文章主要介紹了SpringBoot整合mybatis-plus實現(xiàn)分頁查詢功能,pringBoot分頁查詢的兩種寫法,一種是手動實現(xiàn),另一種是使用框架實現(xiàn),現(xiàn)在我將具體的實現(xiàn)流程分享一下,需要的朋友可以參考下
    2023-11-11
  • Java基礎(chǔ)之Web服務器與Http詳解

    Java基礎(chǔ)之Web服務器與Http詳解

    無論你是前端開發(fā)者還是后端開發(fā)者,以及測試工程師,這篇文章的知識都是你需要弄懂的。讀完這一篇文章,將全面弄懂 HTTP 協(xié)議、TCP 協(xié)議,面試官再也難不倒你相關(guān)知識
    2021-09-09
  • JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

    JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

    這篇文章主要給大家介紹了關(guān)于JDBC中如何使用Java8的日期LocalDate和LocalDateTime的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • mybatis中的count()按條件查詢方式

    mybatis中的count()按條件查詢方式

    這篇文章主要介紹了mybatis中的count()按條件查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • JVM內(nèi)存結(jié)構(gòu):程序計數(shù)器、虛擬機棧、本地方法棧

    JVM內(nèi)存結(jié)構(gòu):程序計數(shù)器、虛擬機棧、本地方法棧

    JVM 基本上是每家招聘公司都會問到的問題,它們會這么無聊問這些不切實際的問題嗎?很顯然不是。由 JVM 引發(fā)的故障問題,無論在我們開發(fā)過程中還是生產(chǎn)環(huán)境下都是非常常見的
    2021-06-06

最新評論