2012-09-28 1 views
2

나는 나의 mapper.xml어떻게 내가 확인할 수있는 방법</p> <pre class="lang-java prettyprint-override"><code>int getCatCount(int catTypeId); </code></pre> <p>되는 매개 변수를 전달하고

<select id="getCatCount" parameterType="String" resultType="int"> 
    select count(*) from Categories where status is not null 
    <if test="catTypeId != 0"> 
    AND cat_type_id = #{catTypeId,jdbcType=INTEGER} 
    </if> 
</select> 

내부 및 mapper.java 방법의 선택 쿼리를 작성했습니다 MyBatis로 동적 쿼리 생성에를 확인할 것 if 조건에 catTypeId. 나는 위의 진술이 정확하지 않다는 것을 알고 있지만 catTypeId가 0이 아니고 AND 조건 만 추가하는지 확인하기 위해 이와 같은 조건을 넣고 싶습니다. 아니면 Category 클래스의 전체 객체를 전달해야합니까?

답변

5

전체 카테고리 클래스를 통과하지 않아도됩니다. 당신이 설명한대로 그냥 그렇게 :

int getCatCount(int catTypeId); 

귀하의 mapper.xml은 다음과 같아야합니다

<select id="getCatCount" parameterClass="map" resultType="int"> 
    select count(*) from Categories where status is not null 
    <if test="param1 != 0"> 
    AND cat_type_id = #{param1,jdbcType=INTEGER} 
    </if> 
</select> 

공지 사항을 parameterClass 당신이지도를 지정할 필요가있다.

이의 지금, 당신은 두 개의 매개 변수를 전달하고자한다고 가정 해 봅시다 :

매퍼에서
int getCatCount(int catTypeId, int mySecondParam); 

, 당신은 당신이 "paramX"명칭을 사용할 필요가 어떻게 param1param2

참조와 함께 작동합니다. 그러나 그 명명법을 사용하는 대신 커스터마이징 된 매개 변수 이름을 "catTypeId"로 사용하고자한다고 가정 해 보겠습니다. 이 경우, 자바 코드에서이 작업을 수행해야합니다

int getCatCount(@Param("cat_type_id ") String cat_type_id); 

는 XML 매퍼는 내가 대해 넣어 하나,하지만 cat_type_id 대신 param1을 사용하는 것입니다.

+0

Jddsantaella에게 한 번 더 감사의 말을 전합니다. – user965884

+0

당신은 환영합니다. – jddsantaella

+0

이것은 내가 새로운 API를 이해하는데 정말로 도움이되었습니다 – Stevko