my Batis 고급 결과 맵 resultMap 의 discriminator

3806 단어 mybatis
discriminator–결과 값 을 사용 하여 어떤 resultMap 을 사용 할 지 결정 합 니 다.
ocase-서로 다른 값 의 결과 맵 기반
술부 내장 결과 맵–case 도 자신 을 인용 할 수 있 기 때문에 같은 요 소 를 포함 할 수 있 습 니 다.외부 에서 resultMap 을 참조 할 수도 있 습 니 다.
 
 
1.외부 resultMap 참조
<resultMap id="vehicleResult" type="Vehicle">  
<id property=”id” column="id" />  
<result property="vin" column="vin"/>  
<result property="year" column="year"/>  
<result property="make" column="make"/>  
<result property="model" column="model"/>  
<result property="color" column="color"/>  
<discriminator javaType="int" column="vehicle_type">  
<case value="1" resultMap="carResult"/>  
<case value="2" resultMap="truckResult"/>  
<case value="3" resultMap="vanResult"/>  
<case value="4" resultMap="suvResult"/>  
</discriminator>  
</resultMap> 

 
 
이 예 에서 MyBatis 는 결과 에서 모든 기록 을 집중 적 으로 꺼 내 vehicle type 의 값 을 비교 합 니 다.discriminator 의 case 와 일치 하면 case 가 지정 한 resultMap 을 사용 합 니 다.이것 은 배타 적 인 것 이다.다시 말 하면 다른 케이스 의 resultMap 은 무시 된다(우리 가 아래 에 말 한 extended 를 사용 하지 않 는 한).어떤 케이스 에 도 일치 하지 않 으 면 MyBatis 는 discriminator 블록 밖 에 있 는 resultMap 을 간단하게 사용 합 니 다.따라서 carResult 가 아래 와 같이 정의 된다 면:
<resultMap id="carResult" type="Car">
<result property=”doorCount” column="door_count" />
</resultMap>

 그러면 doorCount 속성 만 불 러 옵 니 다.식별 기 cases 그룹 과 완전히 독립 하기 위해 서 입 니 다. 아무 상관 없어.아까 의 예 에서 우 리 는 당연히 cars 와 vehicle 의 관 계 를 알 고 있 었 다.a Car is-a Vehicle.따라서 우 리 는 다른 속성 을 불 러 와 야 합 니 다.resultMap 을 조금 바 꿔 야 합 니 다.
 
<resultMap id="carResult" type="Car"extends=”vehicleResult”>
<result property=”doorCount” column="door_count" />
</resultMap>

 
현재,vehicleResult 와 carResult 의 모든 속성 이 불 러 옵 니 다.
 
2.case 자신 참조
 
<resultMap id="vehicleResult" type="Vehicle">  
<id property=”id” column="id" />  
<result property="vin" column="vin"/>  
<result property="year" column="year"/>  
<result property="make" column="make"/>  
<result property="model" column="model"/>  
<result property="color" column="color"/>  
<discriminator javaType="int" column="vehicle_type">  
<case value="1" resultType="carResult">  
<result property=”doorCount” column="door_count" />  
</case>  
<case value="2" resultType="truckResult">  
<result property=”boxSize” column="box_size" />  
<result property=”extendedCab” column="extended_cab" />  
</case>  
<case value="3" resultType="vanResult">  
<result property=”powerSlidingDoor” column="power_sliding_door" />  
</case>  
<case value="4" resultType="suvResult">  
<result property=”allWheelDrive” column="all_wheel_drive" />  
</case>  
</discriminator>  
</resultMap>

 è 기억 하기:이렇게 많은 결과 에 대한 맵 입 니 다.결과 집합 을 지정 하지 않 으 면 MyBatis 열 이름과 속성 이 자동 으로 일치 합 니 다.그래서 위 에서 제시 한 예 는 실제 필요 한 것 보다 상세 하 다.그럼 에 도 불구 하고 대부분의 데이터 베 이 스 는 복잡 하고 모든 상황 이 적용 되 는 것 은 아니다.

좋은 웹페이지 즐겨찾기