2011-10-25 80 views
2

是否有可能在myBatis 3中將單個結果映射到多個對象,確保所有對象都引用相同的實例?有沒有我可以參考的例子?如何將myBatis結果映射到多個對象?

更新添加更多詳細信息:

舉例來說,假設我將關於Contact爲了我在我的數據庫應用程序的信息。我想知道是否有可能使用的MyBatis映射一個接觸的同一個實例,比方說,一個Listing類,它擁有Contact

public class Listing { 
    private Contact myContact; 
    //getters & setters... 
} 

以及爲ContactsHolder類,這也持有Contact

public class ContactsHolder { 
    private Contact aContact 
    //getters & setters... 
} 

我需要通過的MyBatis映射到兩個ListingContactsHolder類是同一個實例對象。這可能嗎?

+0

您可以提供更多關於您試圖解決的問題的信息嗎? MyBatis 3中的結果映射非常強大,它的功能非常強大。 – Andy

+0

@AndyPryor:我已經更新了我的問題,以瞭解更多關於我試圖解決的問題的詳細信息。我希望這有助於澄清我想要做的事情。謝謝! – holic87

+0

你想獲得「Listing」的實例嗎?而「ContactsHolder」的實例是一個數據庫調用? – Andy

回答

1

不,MyBatis無法做到這一點與標準的結果映射。 (至少據我所知)。您可以選擇「聯繫人」對象,然後手動構建一個列表和ContactsHolder,並且它們都引用該聯繫人。

或者實現一個自定義的ResultSetHandler。

這是一種特殊的請求,我不知道爲什麼你想要在兩個對象之間共享相同的實例。這可能就是爲什麼MyBatis 3中不存在這樣的功能。

+0

順便說一下,我可以使用myBatis插件來解決這個問題([用戶指南]第17頁(http://code.google.com/p/mybatis/downloads/detail?name=MyBatis-3-User- Guide.pdf&can = 3&q = Docs))並攔截ResultSetHandler類中的'handleResultSets'方法。我能夠將結果集中包含的「Contact」實例添加到我的'Listing'和'ContactsHolder'類中。 – holic87

+0

好主意,我會更新我的回答以反映。 – Andy

相關問題