2011-01-25 139 views
3

我在MyBatis for Java中映射時遇到了一些問題,並希望得到一些幫助。我的班級結構如下:MyBatis中的映射組合

//Getters/setters omitted for clarity 

class Foo 
{ 
    int id; 
    Bar bar; 
} 

class Bar { 
    String x; 
    int y; 
} 

我的表看起來像這樣 - 即它從類結構中取消規範化。

create table foo_bar (
    id int, 
    x varchar, 
    y int 
); 

我的工作插入語句能夠使用(bar.x,bar.y)參數去規範化。

<insert id="insert" parameterType="foo"> 
    <![CDATA[ 
    insert into foo_bar 
    (id, x, y) values 
    (#{x}, #{bar.x}, #{bar.y}) 
    ]]> 
</insert> 

那麼,問題:

當我執行我的選擇,我想結果對象是美孚的一個實例是有條的引用。

我不認爲我可以使用類型處理程序,因爲它工作在單個列上,而且關聯似乎沒有意義,因爲'Bar'不是通過外部數據庫顯式表示的實體關鍵關係。

任何人都可以告訴我這樣做的建議方式嗎?

謝謝!

回答

2

您是否嘗試過在您的ibatis sqlmap中使用resultMap定義?

<resultMap id="foobar-result" class="Foo"> 
    <result property="id" column="id"/> 
    <result property="bar.x" column="x"/> 
    <result property="bar.y" column="y"/> 
</resultMap> 

,然後在你的sql只是參考的結果映射:

<select id="getFooBar" resultMap="foobar-result">