2014-11-04 3 views
0

두 테이블이 있다고 가정 해 봅시다. 하나는 부모이고 다른 하나는 자식입니다.MyBatis 맵퍼를 어떻게 재사용 할 수 있습니까?

각 테이블마다 SQL 매퍼가 있습니다.

부모의 매퍼에서 child 's sql mapper를 어떻게 사용할 수 있습니까?

ON DELETE CASCADE을 구현하고 싶습니다. 내 데이터베이스, 불행히도, 해당 기능을 지원하지 않습니다. 당신은 한 조각에 두 개의 쿼리를 실행하고 다른 조각을 재사용 할 수

<delete id="deleteParent" ...> 
    <!-- call `deleteChildren` here --> 
    <!-- ant then delete the parent --> 
    DELETE FROM PARENT WHERE ID = #{id} 
</delete> 

답변

1

에 내가 가진 내 아이 매퍼에서

... 내 부모 매퍼에서
<delete id="deleteChildren" ...> 
    DELETE FROM CHILD WHERE PARENT_ID = #{parentId} 
</delete> 

난 그냥 원하는 include을 사용하십시오. 그러나 SQL 구문은 데이터베이스에 따라 다릅니다. MySQL의에서

:

MS-SQL에서
<delete id="deleteParent" ...> 
    <include refid="Child.deleteChildren" />; 
    DELETE FROM PARENT WHERE ID = #{id}; 
</delete> 

:

<delete id="deleteParent" ...> 
    <include refid="Child.deleteChildren" /> 
    GO 
    DELETE FROM PARENT WHERE ID = #{id} 
</delete> 
+0

'GO' 어쨌든 무엇입니까? –

+1

동시에 두 개 (또는 그 이상)의 쿼리를 실행할 수 있습니다. –

관련 문제