第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

關(guān)于mybatis關(guān)聯(lián)查詢,及到底好在哪里的疑惑。

老師您好,工作中一直未使用過mybatis,既然用戶信息及密碼在兩張表里存著,為何不用映射關(guān)系呢?或者為什么不用關(guān)聯(lián)查詢返回結(jié)果而要請求兩次數(shù)據(jù)庫呢?看到mybatis查詢返回都是對應的數(shù)據(jù)庫對象,那如果我要想返回多表關(guān)聯(lián)的結(jié)果該怎么做呢?個人認為mybais的xml文件寫起來很麻煩,求教mybatis到底好在哪里為什么現(xiàn)在用mybatis的越來越多,mybatis的多表關(guān)聯(lián)是不是寫起來很麻煩不如直接jdbctemplate來洋洋灑灑。求教,謝謝。

正在回答

1 回答

你好:

  1. mybatis和jdbctemplate比較,的確jdbctemplate可以讓你非常自由的寫代碼,就像直接寫sql語句一樣,但是這些自由度在企業(yè)級的團隊內(nèi)的應用是災難性的,首先,所有人的代碼落地都是基于自己的業(yè)務場景,放縱的寫sql,用join,當然,必要的多對多的join是可以的,但是好幾張甚至好幾十張表關(guān)聯(lián)在一起的應用是沒有辦法維護的,到那一天所有人都會發(fā)現(xiàn)我們的應用是完全面向數(shù)據(jù)庫的設計風格,而不是面向業(yè)務模型的,等到業(yè)務發(fā)生了變化所有人都要看代碼改代碼到底層的sql語句級別,而且多join的數(shù)據(jù)表操作在上萬數(shù)據(jù)后都是沒有任何性能優(yōu)化的空間,索引都不知道往哪里加,因此mybatis提供的是orm的一套框架,不是說mybatis好,而是orm在業(yè)務模型的應用中好,將數(shù)據(jù)庫當作簡單的存儲,業(yè)務應用只感知領域模型,模型及是業(yè)務,性能優(yōu)化也圍繞模型去做,用緩存存模型而非單純靠sql語句優(yōu)化。

  2. 用戶和密碼對應的一對一關(guān)系的確可以用mybatis的關(guān)系映射做,但是試想日后我們數(shù)據(jù)庫龐大到一定程度了需要拆庫分表,我們第一個想到的是將只有登陸會用的密碼表放到另一個數(shù)據(jù)庫,將現(xiàn)在的user數(shù)據(jù)表放在獨立的數(shù)據(jù)庫內(nèi)提升用戶查詢方面的效率,這個時候一個mybatis的映射是無法跨兩個數(shù)據(jù)源的,因此性能優(yōu)化又會碰到問題。我強烈推薦數(shù)據(jù)庫和mybatis的dataobject做一對一關(guān)系,既方便代碼的維護,又可以清晰的在model層面理清領域模型的處理關(guān)系。當然針對一些聯(lián)合查詢排序的問題還是要依靠join的。我說的絕對不是不用join,而是可以依靠單表操作解決的一定不要用join

3 回復 有任何疑惑可以回復我~
#1

時間丶思考 提問者

謝謝,您的解答很好,明白了一大部分,剩下的可能還是需要在實際應用中體會吧,非常感謝。
2018-12-10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關(guān)于mybatis關(guān)聯(lián)查詢,及到底好在哪里的疑惑。

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號