my Batis 고급 결과 맵 resultMap 의 discriminator
3806 단어 mybatis
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 열 이름과 속성 이 자동 으로 일치 합 니 다.그래서 위 에서 제시 한 예 는 실제 필요 한 것 보다 상세 하 다.그럼 에 도 불구 하고 대부분의 데이터 베 이 스 는 복잡 하고 모든 상황 이 적용 되 는 것 은 아니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.