일단 PartyVO는 N이라고 가정한다.
<collection> 태그 안의 내용은 M , 즉 N :M의 관계에서 M을 나타낸다.
<discriminator> 태그 안의 내용은 분기점을 나타나는데 즉 해당 컬럼이 하나의 상수라고 생각함이 편하다.
해당 컬럼의 값여부를 판단하여 <case>태그에 따라 <resultMap>을 분기한다.
<discriminator> 태그 속성의 extends 속성에 따라 상속관계가 정의되어 있어 해당 resultMap을 상속받아 맵핑한다.
<resultMap type="www.study.com.orm.party.model.PartyVO" id="partyVo">
<result column="id" property="id" javaType="java.lang.Integer"/>
<result column="name" property="name" javaType="java.lang.String"/>
<result column="birth_date" property="birthDate" javaType="java.util.Date"/>
<collection property="listContactPoint" ofType="www.study.com.orm.party.model.ContactPointVO">
<id property="typeName" column="type_name"/>
<result property="contactPoint" column="t_contact_point"/>
</collection>
<collection property="listHashTag" resultMap="hashTagVo" columnPrefix="ht_">
</collection>
<discriminator javaType="java.lang.String" column="party_type">
<case value="PERSON" resultMap="personResult"/>
<case value="ORGANIZATION" resultMap="organizationResult"/>
</discriminator>
</resultMap>
<resultMap type="www.study.com.orm.party.model.PersonVO" id="personResult" extends="partyVo">
<result column="gender" property="gender"/>
</resultMap>
<resultMap type="www.study.com.orm.party.model.OrganizationVO" id="organizationResult" extends="partyVo">
<result column="salesTot" property="salesTot"/>
</resultMap>
<resultMap type="www.study.com.orm.party.model.HashTagVO" id="hashTagVo">
<result column="id" property="id" javaType="java.lang.Integer"/>
<result column="name" property="name" javaType="java.lang.String"/>
</resultMap>
<resultMap type="www.study.com.orm.party.model.ContactPointVO" id="contactPointVo">
<result column="id" property="id" javaType="java.lang.Integer"/>
<result column="name" property="name" javaType="java.lang.String"/>
<result column="birth_date" property="birthDate" javaType="java.util.Date"/>
</resultMap>
마이바티스는 getter setter 로 작동하기 떄문에 객체생성이 우선된다. 그러므로 매개값없는 생성자는 반드시 필요하다.
'MyBatis' 카테고리의 다른 글
association , constructor (0) | 2020.09.18 |
---|---|
<forEach> 를 이용한 반복 insert 쿼리문 생성 (0) | 2020.09.08 |
log4jdbc-log4j2 (0) | 2020.08.02 |
MyBatis 에서의 자동증가 (Auto-Increatement, sequence) 값 가져오기. (0) | 2020.07.21 |
Mybatis 콘솔에 쿼리문 및, 결과 출력- (0) | 2020.07.19 |