日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

解決mybatis三表連接查詢數據重復的問題

瀏覽:304日期:2023-10-20 13:39:15

此問題的產生,主要是數據庫的字段名一樣導致

三張表 DOCTOR JOB OBJECT

有問題的查詢語句和查詢結果是:

SELECT d.*,j.*,o.* from (select d.*,rownum r from DOCTOR d where rownum<=6) d join job j on d.job_id=j.id join object o on o.id=d.object_id where r>0

<img src='https://img-blog.csdn.net/20161020110037608?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center' alt='' />

注意 :查詢結果中有6列是一樣的id,name

修改為別名

SELECT d.*,j.name jobn,j.id jid,j.oid joid,o.id objid,o.name objn from (select d.*,rownum r from DOCTOR d where rownum<=6) d join job j on d.job_id=j.id join object o on o.id=d.object_id where r>0

<span style='color:#3366ff;'>新的查詢結果是: 注意看列名</span><span style='color:#3366ff;'></span><span style='color:#3366ff;'><img src='https://img-blog.csdn.net/20161020110703515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center' alt='' /></span>

此時依然不能解決數據重復問題,還需要修改resultMap的column屬性名為別名

解決mybatis三表連接查詢數據重復的問題

至此問題全部解決!

補充:Mybatis連3表查詢數據resultMap結果映射

一、前言

MyBatis是基于“數據庫結構不可控”的思想建立的,也就是我們希望數據庫遵循第三范式或BCNF,但實際事與愿違,那么結果集映射就是MyBatis為我們提供這種理想與現實間轉換的手段了,而resultMap就是結果集映射的配置標簽了。

二、從SQL查詢結果到領域模型實體

在深入ResultMap標簽前,我們需要了解從SQL查詢結果集到JavaBean或POJO實體的過程。

1. 通過JDBC查詢得到ResultSet對象

2. 遍歷ResultSet對象并將每行數據暫存到HashMap實例中,以結果集的字段名或字段別名為鍵,以字段值為值

3. 根據ResultMap標簽的type屬性通過反射實例化領域模型

4. 根據ResultMap標簽的type屬性和id、result等標簽信息將HashMap中的鍵值對,填充到領域模型實例中并返回

三、ResultMap標簽

1. 屬性說明

id屬性 ,resultMap標簽的標識。

type屬性 ,返回值的全限定類名,或類型別名。

autoMapping屬性 ,值范圍true(默認值)|false, 設置是否啟動自動映射功能,自動映射功能就是自動查找與字段名小寫同名的屬性名,并調用setter方法。而設置為false后,則需要在`resultMap`內明確注明映射關系才會調用對應的setter方法。

2. 基本作用:建立SQL查詢結果字段與實體屬性的映射關系信息

示例1:通過setter構造領域模型

public class EStudent{ private long id; private String name; private int age; // getter,setter方法 /** * 必須提供一個無參數的構造函數 */ public EStudent(){}}

<select resultMap='getStudentRM'> SELECT ID, Name, Age FROM TStudent</select><resultMap type='EStudnet'> <id property='id' column='ID'/> <result property='studentName' column='Name'/> <result property='studentAge' column='Age'/></resultMap>

子元素說明:

id元素 ,用于設置主鍵字段與領域模型屬性的映射關系

result元素 ,用于設置普通字段與領域模型屬性的映射關系

示例2:通過構造函數構造領域模型

public class EStudent{ private long id; private String name; private int age; // getter方法 public EStudent(long id, String name, int age){ this.id = id; this.name = name; this.age = age; }}

<select resultMap='getStudentRM'> SELECT ID, Name, Age FROM TStudent</select><resultMap type='EStudnet'> <constructor> <idArg column='ID' javaType='_long'/> <arg column='Name' javaType='String'/> <arg column='Age' javaType='_int'/> </constructor></resultMap>

子元素說明:

constructor元素 ,指定使用指定參數列表的構造函數來實例化領域模型。注意:其子元素順序必須與參數列表順序對應

idArg子元素 ,標記該入參為主鍵

arg子元素 ,標記該入參為普通字段(主鍵使用該子元素設置也是可以的)

3. 一對一關系、一對多關系查詢這里不多說

注意:在采用嵌套結果的方式查詢一對一、一對多關系時,必須要通過resultMap下的id或result標簽來顯式設置屬性/字段映射關系,否則在查詢多條記錄時會僅僅返回最后一條記錄的情況。

4. 動態映射關系信息

通過 discriminator子元素 (鑒別器)可以實現動態映射關系信息的設置。具體示例如下:

public class EStudent{ private long id; private String name; private String juniorHighSchool; private String seniorHighSchool; private int during; // 在本校就讀時間 // getter,setter方法 /** * 必須提供一個無參數的構造函數 */ public EStudent(){}}

情景:查詢學生信息的seniorHighSchool信息,若就讀時間during字段值為4、5、6時,則以juniorHighSchool字段作所為seniorHighSchool信息。

<select resultMap='rm'> SELECT ID, Name, JuniorHighSchool, SeniorHighSchool, during FROM TStudent</select><resultMap type='EStudent'> // 若不加這句,則當將juniorHighSchool賦予給seniorHighSchool屬性時,juniorHighSchool屬性將為null <result column='juniorHighSchool' property='juniorHighSchool'/> <discriminator column='during' javaType='_int'> // 形式1:通過resultType設置動態映射信息 <case value='4' resultType='EStudent'> <result column='juniorHighSchool' property='seniorHighSchool'/> </case> // 形式2: 通過resultMap設置動態映射信息 <case value='5' resultMap='dynamicRM'/> <case value='6' resultMap='dynamicRM'/> </discriminator></resultMap><resultMap type='EStudent'> <result column='juniorHighSchool' property='seniorHighSchool'/></resultMap>

注意:上面關于 discriminator子元素 的 case元素 的 resultType屬性 和 resultMap元素 的 type屬性 ,均不是直指返回的領域模型類型,而是指定根據判斷條件后得到映射關系,可通過 id子元素 和 result子元素 重寫映射關系。

5. id元素,result元素,idArg元素,arg元素,discriminator元素的共同屬性

javaType屬性 :Java類的全限定名,或別名

jdbcType屬性 :JDBC類型, JDBC類型為CUD操作時列可能為空時進行處理

typeHandler屬性 :指定類型處理器的全限定類名或類型別名

column屬性 :指定SQL查詢結果的字段名或字段別名。將用于JDBC的 resultSet.getString(columnName)

四、總結

掌握上述內容,那么在寫一對一關系、一對多關系查詢時就更有把握了哦!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Mybatis 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
伊人成人网在线看| 亚洲欧美日本国产| 黑人精品一区| 欧美一级精品| 亚洲精品激情| 老司机精品视频网| 亚洲午夜视频| 亚洲精品四区| 国产盗摄——sm在线视频| 99亚洲视频| 日韩av电影一区| 成人国产精品久久| 黄色日韩精品| 国产日韩一区二区三区在线播放| 精品黄色一级片| japanese国产精品| 日本不卡一区二区三区| 精品一区电影| 国产真实久久| 欧美日韩一区二区国产| 先锋亚洲精品| 久久精品一区二区三区中文字幕| 久久中文字幕导航| 亚洲一级少妇| 美女国产一区| 国产精品欧美三级在线观看| 久久久久久网| 女同性一区二区三区人了人一| 免费黄网站欧美| 久久国产三级| av资源中文在线| 蜜桃视频欧美| 亚洲精品乱码| 欧美91在线|欧美| 天堂中文在线播放| 日韩专区在线视频| 国产香蕉精品| 肉色欧美久久久久久久免费看| 午夜在线视频观看日韩17c| 欧美在线看片| 一区二区精品伦理...| 欧美日韩四区| 久久精品72免费观看| 国产激情在线播放| 中文在线一区| 国产精品白丝久久av网站| 亚洲不卡av不卡一区二区| 手机精品视频在线观看| 国产精品第一| 激情六月综合| 欧美一区成人| 久久视频精品| 日本久久一区| 少妇精品导航| 欧美亚洲福利| 99免费精品| 国产日韩欧美中文在线| 麻豆9191精品国产| 私拍精品福利视频在线一区| 麻豆91小视频| 日韩动漫一区| 快she精品国产999| 日韩免费看片| 精品视频91| 久久国产视频网| 免费在线观看一区二区三区| 黄色成人精品网站| 国产日韩亚洲| 午夜久久一区| 精品视频免费| 日韩一区网站| 成人看片网站| 国产日韩一区二区三区在线播放| 久久久久亚洲| 卡一卡二国产精品| 中文字幕日本一区| 91精品一区二区三区综合| 日韩av中文在线观看| 久久婷婷一区| 欧美激情精品| 在线精品亚洲| 国产99久久| 国产亚洲欧美日韩在线观看一区二区| 99精品综合| 午夜久久免费观看| 97人人精品| 欧美日本三区| 一区二区亚洲视频| 国模 一区 二区 三区| 亚洲欧美日韩专区| 国产不卡av一区二区| 精品一区视频| 久久不卡国产精品一区二区| 欧美三级第一页| 国产亚洲人成a在线v网站| 久久国产乱子精品免费女| 人人爱人人干婷婷丁香亚洲| 日韩激情av在线| 日韩不卡一二三区| 国产精品一区三区在线观看| 久久av超碰| 国语精品一区| 成人亚洲一区二区| 成人在线丰满少妇av| 国内在线观看一区二区三区 | 国产高清久久| 激情综合网站| 国产日韩综合| 老司机精品久久| 亚洲综合中文| 亚洲精品少妇| 欧美精品福利| 精品国产中文字幕第一页| 鲁鲁在线中文| 久久久久.com| 99亚洲视频| 亚洲va久久久噜噜噜久久| 日韩黄色av| 国产精品亲子伦av一区二区三区 | 婷婷精品视频| 午夜精品一区二区三区国产| 一本色道精品久久一区二区三区| 巨乳诱惑日韩免费av| 日韩精选在线| 精品一区在线| 9色精品在线| 在线亚洲自拍| 亚洲一区二区毛片| 一区二区三区四区在线观看国产日韩| 国产精品美女久久久浪潮软件| 国产一区白浆| 蜜臀久久99精品久久久画质超高清 | 国产传媒在线| 99精品视频在线观看免费播放| 麻豆精品网站| 国产精品美女在线观看直播| 亚洲精品成人图区| 妖精视频成人观看www| 亚洲毛片网站| 精品网站999| 激情久久五月| 天堂av一区| 高清av一区| 午夜国产精品视频| 欧美精品国产白浆久久久久| 色综合五月天| 国产亚洲欧洲| 国产精品一区亚洲| 久久在线免费| 国产午夜久久av| 欧美精品高清| 亚洲欧洲美洲国产香蕉| 日本欧美国产| 亚洲三区欧美一区国产二区| 高清一区二区| 在线精品福利| 中文在线资源| 日本中文字幕一区二区| 毛片在线网站| 日本在线一区二区三区| 日本不良网站在线观看| 日韩中文字幕麻豆| 成人免费一区| 亚洲综合色婷婷在线观看| 高清一区二区| 亚洲精品系列| 欧洲av不卡| 欧美日韩亚洲国产精品| 精品一区免费| 乱一区二区av| 在线一区欧美| 红杏一区二区三区| 亚洲精选成人| 欧美日韩精品免费观看视欧美高清免费大片| 亚洲一区二区三区四区电影 | 一区二区小说| 国产探花一区在线观看| 国产在线不卡| 精品资源在线| 亚洲精品看片| 国内精品99| 久久久久亚洲精品中文字幕| 亚洲综合日韩| 日韩欧美一区免费| 日韩av中文字幕一区| 99久久99久久精品国产片果冰| 国产亚洲久久| 国产麻豆综合| 日韩一区欧美| 久久不见久久见国语| 久久国产成人| 伊人精品一区| 国产成人77亚洲精品www| 日韩国产一区二| 欧美特黄a级高清免费大片a级| 日韩av在线中文字幕| 国产欧美三级| 日韩精品一二区| 婷婷激情图片久久| 日韩免费在线|