2013-10-02 2 views
1

아래와 같이 MyBatis 매퍼 XML 파일에 두 개의 선택 항목이 있습니다. 선택 초 getResultsB 두 개의 다른 선택 결과를 하나의 결과 집합으로 합치십시오.

  • 모두 먼저 결합하고 - - 여기 getResultsAAndB
  • getResultsA

  • 만 번째부터 결과를 얻을 수 -에 첫 번째로 선택

    1. 하는 것은 단지 결과를 가져옵니다 : 나는 세 가지 시나리오를 가지고 내 XML입니다 :

      <select id="getResultsA" resultMap="myResultMap" parameterType="MyParameters"> 
          <!-- select statement 1 --> 
      </select> 
      
      <select id="getResultsB" resultMap="myResultMap" parameterType="MyParameters"> 
          <!-- select statement 2 --> 
      </select> 
      
      <select id="getResultsAAndB" resultMap="myResultMap" parameterType="MyParameters"> 
          <!-- NEED TO MERGE RESULTS FROM BOTH getResultsA & getResultsB--> 
      </select> 
      

      시나리오 1과 2, 나는 각각의 선택을 따로 사용할 수있다. 어떻게 새로운 SQL 문을 조합으로 작성하지 않고도 세 번째 시나리오를 달성 할 수 있습니까? 나는 현재 두 개의 별도 매퍼 호출에 의해 이것을 달성하고 나서 list.addall(anotherList)을 Java로 사용하여 결과를 병합합니다. 다른 말로하면, 나는 select와 result map이 같은 것이되는 결과를 병합 할 필요가있다. 이것이 가능해야한다고 생각한다.

  • +0

    이미 언급 한 SQL (UNION 또는 Java의 addAll())에 대한 일반적인 해결책이 있는지 의심 스럽습니다. select 문을 게시하십시오. 문제 해결 방법이있을 수 있습니다. –

    답변

    0

    국기 속성을 추가하는 것에 대해 생각해 본 적이 있습니까? MyParameters? 그런 다음 위의 3 가지 SQL을 모두 하나로 병합 할 수 있습니다. -

    <select id="getResultsAOrBOrAB" resultMap="myResultMap" parameterType="MyParameters"> 
        SELECT * FROM TABLE 
        <trim prefix="WHERE" prefixOverrides="OR"> 
         <if test="flag == 'A' or flag == 'AB'"> 
         <!-- criteria statement 1 --> 
         </if> 
         <if test="flag == 'B' or flag == 'AB'"> 
         OR <!-- criteria statement 2 --> 
         </if> 
    </select> 
    
    관련 문제