鍍金池/ 問答/Java  C++/ SSM框架中多表關(guān)聯(lián)如何操作

SSM框架中多表關(guān)聯(lián)如何操作

我先說說我自己是如何操作mybatis的多表關(guān)聯(lián)的查詢的

我并沒有用sql語句嵌套查詢,多表查詢?nèi)际怯迷诖a挨個(gè)單表查詢實(shí)現(xiàn)的

比如我一般在Controller層這么寫

DomainA a = serviceA.find(1);
DomainB b = serviceB.find(a.getBid());
modelMap.put("a",a);
modelMap.put("b",b);

這樣寫是否是正確的寫法?

我原先的這段話可能存在歧義:

我是否應(yīng)該在sql中寫多表關(guān)聯(lián)? 如果這么做 返回的數(shù)據(jù)無法用Model層的對(duì)象包裝返回

修改成:
我是否應(yīng)該在sql中寫多表關(guān)聯(lián)? 結(jié)果集是個(gè)多表不同字段的結(jié)果集 單個(gè)表的Model已經(jīng)無法滿足.

一些回答說可以一個(gè)新Model包含兩張表的字段,那我如果跨4,5張表這種呢,為了一次查詢新建一個(gè)存在非常多字段的類(成員變量可能超過200)嗎?

還有一個(gè)問題,ModelMap寫在Service層好嗎

回答
編輯回答
鐧簞噯

你可能忘記了mybatis的xml文件可以寫ResultMap這個(gè)東西

多表查詢之后 結(jié)果映射到ResultMap里

2018年6月14日 07:21
編輯回答
葬愛

使用子查詢或者join,然后新建一個(gè)新的dto對(duì)象將DomainA 和DomainB 中需要的屬性包起來就行了,隨著業(yè)務(wù)的增加而增加新的屬性。

2018年6月30日 11:47
編輯回答
陪她鬧

在sql里多表查詢,Model類只要有對(duì)應(yīng)的字段,就會(huì)返回?cái)?shù)據(jù)。

2017年5月10日 14:51
編輯回答
熟稔

如果兩張表在一個(gè)庫,既然用了mybatis了,在數(shù)據(jù)量允許情況下,就用join吧

2017年2月18日 12:55