dao層mysql復合語句_在業務中是使用多個Dao組合好,還是一個鏈接查詢好?

問題描述

假如目前有一個查詢用戶詳情的接口

用戶基礎表關聯了很多用戶其他信息的表,現在要把所有查詢出來,是使用多個dao在service中組合,還是直接鏈接查詢好

示例代碼

用戶表(user_base)

用戶信息表1(user_info_1)

用戶信息表2(user_info_2)

用戶信息表3(user_info_3)

...

用戶信息表n(user_info_n)

多個dao查詢返回

@Service

public class UserDetailServiceImpl implements UserService{

@Autowired

private UserBaseDao userBaseDao;

@Autowired

private UserInfoDao1 userInfoDao1;

@Autowired

private UserInfoDao2 userInfoDao2;

@Override

public UserInfoVo getDetail(String userId){

UserInfoVo userInfoVo = new UserInfoVo ();

// 多個dao獲取相關要返回的信息

UserBase userBase = userBaseDao.getByUserId(userId);

UserInfo1 userInfo1 = userInfoDao1.getByUserId(userId);

UserInfo2 userInfo2 = userInfoDao2.getByUserId(userId);

// 最后返回的VO類各種set信息返回給前臺

userInfoVo.set(dao1返回結果);

...

...

userInfoVo.set(daoN返回結果);

return userInfoVo ;

}

}

鏈接查詢

@Service

public class UserDetailServiceImpl implements UserService{

@Autowired

private UserBaseDao userBaseDao;

@Override

public UserInfoVo getDetail(String userId){

// 單個dao內用鏈接查詢返回一個VO類

UserInfoVo userInfoVo = userBaseDao.getDetail(userId);

// 查詢的sql偽代碼

String sql =

"select '要返回字段' from user_base

left join user_info_1 on user_base.user_id = user_info_1.user_id

left join user_info_2 on user_base.user_id = user_info_2.user_id

...

left join user_info_n on user_base.user_id = user_info_n.user_id

where user_base.user_id = :userId";

// 這里就可以省略各種set

return userInfoVo ;

}

}

相關疑問

使用第一種多個Dao組合返回數據,在Service層各種set雖然要復雜一些,但感覺上,耦合性沒有那么高,各個部分dao都很獨立,也可以在其他地方復用

使用第二種方法,除了要自己手寫很長的sql語句,Service層的處理要簡單很多。但復用性不夠

希望能基于相關程序設計思想上,對這兩種方式的選擇給予相關的解答,或者有其他設計實現方法。不勝感激

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395212.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395212.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395212.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

九陰真經戰無不勝服務器位置,九陰真經各門派武功風水寶地分類及坐標大全

尋得一處風水寶地可以養神還可以修煉武功,九陰真經中的各大門派和全部武功適合修煉的寶地都在哪里呢?都分為哪幾類,具體坐標是什么?1、風水寶地作用:九陰真經風水寶地共分山、水、洞、林、雪、市六種,分別對…

Gartner Q2服務器市場報告5大要點

服務器場景調查 根據市場研究公司Gartner的調查報告,第二季度Dell的服務器市場取得了豐富的成果,HPE的市場份額比去年同期略有下降,但仍保留了其全球服務器市場第一的位置。 Gartner表示,全球服務器銷售收入在第二季度與去年同期相…

MySQL實戰面試題_Mysql實戰面試題

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓一、索引B Tree 原理1. 數據結構B Tree 指的是 Balance Tree,也就是平衡樹。平衡樹是一顆查找樹,并且所有葉子節點位于同一層。B Tree 是基于 B Tree 和葉子節點順序訪問指針進行實現,它具有 B T…

Redux有何優點?

by Justin Falcone賈斯汀法爾科內(Justin Falcone) Redux有何優點? (What’s So Great About Redux?) Redux elegantly handles complex state interactions that are hard to express with React’s component state. It is essentially a message-passing syste…

python基礎——使用模塊

python基礎——使用模塊 Python本身就內置了很多非常有用的模塊,只要安裝完畢,這些模塊就可以立刻使用。 我們以內建的sys模塊為例,編寫一個hello的模塊: #!/usr/bin/env python3 # -*- coding: utf-8 -*- a test module __author…

力扣——鍵盤行

給定一個單詞列表,只返回可以使用在鍵盤同一行的字母打印出來的單詞。鍵盤如下圖所示。 示例: 輸入: ["Hello", "Alaska", "Dad", "Peace"] 輸出: ["Alaska", "Dad"]注意: 你可…

網絡空間技術實驗室:打造信息安全技術培育平臺

從PC互聯網到移動互聯網,音視頻、圖片越來越成為大眾關注的熱點。過去,人們習慣于在網絡瀏覽文字新聞;今天,人們對于視頻新聞、圖片新聞的接受度更高。 網絡的發展無疑給人們帶來了便利。但同時,一個不可否認的事實是&…

如何對mysql做物理備份_如何創建物理MySQL備份

前提條件在開始之前,確保你有一個有sudo權限的用戶和一個MySQL數據庫服務器。查找數據目錄使用root密碼登錄到MySQL服務器。$ sudo mysql -u root -p下面的SQL顯示MySQL實例的數據目錄。mysql> select datadir;輸出類似于-----------------| datadir |----------…

freecodecamp_1000天的freeCodeCamp

freecodecampToday, the freeCodeCamp community turns 1,000 days old. We’ve accomplished a lot together in that time:今天,freeCodeCamp社區已經有1000天的歷史了。 到那時我們已經共同完成了很多工作: 6,000 campers have gotten their first d…

如何正確遍歷刪除List中的元素,你會嗎?

遍歷刪除List中的元素有很多種方法,當運用不當的時候就會產生問題。下面主要看看以下幾種遍歷刪除List中元素的形式: 1.通過增強的for循環刪除符合條件的多個元素 2.通過增強的for循環刪除符合條件的一個元素 3.通過普通的for刪除刪除符合條件的多個元素…

Jmeter 通過json Extracted 來獲取 指定的值的id

在沒有 精確或模糊查詢的接口時可以使用jmeter 獲取指定的值的ID import java.lang.String ; String getTargetName"iphone632g"; //判讀相應結果中是否包含指定值:iphone632g boolean containsCategoryprev.getResponseDataAsString().contains(getTarge…

mysql 結果保存到文件_將MySQL中sql運行結果保存到文件

將MySQL中sql運行結果保存到文件有兩種方法。方法一:在mysql>提示符中使用teemysql> tee output.txtLogging to file output.txtmysql> noteeOutfile disabled.或者mysql> \T output.txtLogging to file output.txtmysql> \tOutfile disabled.這個類…

獲取電腦和操作系統信息-uname

用法:uname [選項]...輸出一組系統信息。如果不跟隨選項,則視為只附加-s 選項。-a, --all 以如下次序輸出所有信息。其中若-p 和-i 的探測結果不可知則被省略:-s, --kernel-name 輸出內核名稱-n, --nodename 輸出網絡節點…

MobileSpace-關于我的激情的故事

by Monte Thakkar通過Monte Thakkar MobileSpace-關于我的激情的故事 (MobileSpace — A story about my passions) 我發現,學習和教授iOS開發的旅程 (My journey to discovering, learning, and teaching iOS development) “Let this be the first thing you hea…

Do you have an English name? 你有英文名嗎?

文中提到的所有人名都是虛構的,如有雷同,純屬巧合。當然,你的洋名兒也可能是德文、法文、意大利文,等々々々。 全球化時代,和老外的交流也多了。“高端”的程序員想要進歐美系外企,想要出國看世界&#xff…

php+nginx導入太大文件報http error錯誤的原因

項目中用到太多的導入導出,最近換了服務器,導致一旦文件過大就出現http error的錯誤,查找后是配置文件沒有同步的原因,php.ini需要幾個配置 upload_max_filesize 20M 表示上傳的最大文件為20M post_max_size 20M 允許post提交的…

rhel 7.2 安裝mysql_在rhel7.2下源碼安裝mysql-5.6.35

如何在一臺新機rhel7.2下源碼安裝mysql-5.6.35一、前期準備工作1、首先安裝依賴包,避免在安裝過程中出現問題yum -y install gcc gcc-c cmake ncurses-devel autoconf perl perl-devel2、下載源碼包3、創建mysql安裝目錄以及數據存放目錄[[email protected] liuzhen…

網絡安全不是奢侈品,而是必需品

2016年國家網絡安全宣傳周于9月19日至25日在武漢隆重舉辦。《長江日報》記者高萌采訪了思科全球副總裁、大中華區首席技術官曹圖強,以下是9月19日《長江日報》刊登的采訪全文: 思科全球副總裁、大中華區首席技術官曹圖強昨日下午,思科全球副總…

開源開發平臺_電線之間:開源開發商Sindre Sorhus的采訪

開源開發平臺by Vivian Cromwell通過維維安克倫威爾(Vivian Cromwell) 電線之間:開源開發商Sindre Sorhus的采訪 (Between the Wires: An interview with open source developer Sindre Sorhus) Here’s my interview Sindre Sorhus, a prolific open source devel…

白宮力挺FBI:庫克干擾司法與正義

據中文業界資訊站報道,眼看著谷歌、Mozilla、Facebook等大組織都開始聲援庫克,美國白宮也就關于要求蘋果協助解鎖iPhone調查加州槍擊案的事件作出了回應。白宮新聞秘書Josh Earnest強調,FBI并沒有要求蘋果重新設計產品或者是給它們留后門&…