2015-04-22 60 views
1

此示例僅適用於我的數據庫。我有以下的表稱爲食譜:如何處理鏈接同一實體的多個列

id | author_name | recipe1_id | recipe2_id | recipe3_id 

所有的食譜是關係到recipes_ingredients表:

id | recipe_id | ingredient1 | ingredient2 | ingredient3 

現在我做三JOINS上recipe1_id到recipe3_id這樣的:

SELECT recipe1.ingredient1 as recipe1ingredient1, recipe1.ingredient2 as recipe1ingredient2, recipe1.ingredient3 as recipe1ingredient3, [...] 
FROM recipes 
INNER JOIN recipe recipe1 ON (recipes.recipe1_id = recipes.id) 
INNER JOIN recipe recipe2 ON (recipes.recipe2_id = recipes.id) 
INNER JOIN recipe recipe3 ON (recipes.recipe3_id = recipes.id) 

要將3個配方映射到MyBatis中的一個bean中,我有三個resultsMaps,它們將每個配方映射到包含3種配料的配方對象(recipe1,recipe2,recipe3)。

但是:我想在食譜列表中。我怎麼能做到這一點? PS:可以肯定的是,我在表食譜和表食譜成分中只有3個實體。這永遠不會改變,所以我不認爲有理由將它放在n:m表中。

回答

0

我認爲這會起作用。

<resultMap id="recipe1" type="recipe1"> 
... 
</resultMap> 

<resultMap id="recipe2" type="recipe2"> 
... 
</resultMap> 

<resultMap id="recipe3" type="recipe3"> 
... 
</resultMap> 

<select id="getRecipes" parameterType="list" resultMap="recipe1, recipe2, recipe3"> 
    SELECT recipe1.ingredient1 as recipe1ingredient1, recipe1.ingredient2 as recipe1ingredient2, recipe1.ingredient3 as recipe1ingredient3, [...] 
    FROM recipes 
    INNER JOIN recipe recipe1 ON (recipes.recipe1_id = recipes.id) 
    INNER JOIN recipe recipe2 ON (recipes.recipe2_id = recipes.id) 
    INNER JOIN recipe recipe3 ON (recipes.recipe3_id = recipes.id) 
</select> 

來源:MyBatis multiple resultsets

+0

這是我做的。我只是問是否沒有簡單的方法。所以我想這不是?! – beseder

相關問題