association 은 1:N의 관계에서 1 을 나타낸다.
constructor 는 생성자를 이용한 객체 맵핑을 이야기하며 , 생성후 세터를 부르는 것보다 빠를 것이라 생각한다.
id는 각 네임스페이스의 구분자<<<<네임스페이스의 구분자라는 내용이 굉장히 중요.
그러므로 각 마스터 테이블은 1개의 id를 가지는 것이 가장 올바르며 바람직하다.
discriminator 는 필수여부로 취급되는 듯 하며 , <constructor> 의 idArg 부분도 필수여부로 취급되는 듯하다.
그러므로 테이블 매핑시 컬럼기재를 해줘야 맵핑이 되더라.
<resultMap id="replyResultMap"
type="www.study.com.bulletinboard.model.ReplyVO">
<!-- <constructor>
<idArg column="hierarchy_id" javaType="String" jdbcType="VARCHAR"/>
</constructor> -->
<!-- id : namespace에서 식별자로 구동. Master 2 Master 와의 association 관계까지
함께 읽어들일 때는 namespace를 분리하세요!
Master Table 당 하나의 Mapper를 만들어야합니다.
-->
<id property="hierarchyId" column="hierarchy_id" javaType="String" />
<result property="content" column="content" />
<result property="regDate" column="reg_date" />
<result property="updateDate" column="update_date" />
<!-- 다른 Mapper.xml에서 정의된 resultMap을 활용하는 방법 --> <!-- 1:N -->
<association property="writer" columnPrefix="m_" resultMap="www.study.com.party.mapper.PartyMapper.partyResultMap"/>
<!-- 구분자 -->
<discriminator javaType="String" column="post_type">
<case value="POST" resultMap="postResultMap" />
</discriminator>
</resultMap>
이런 식으로, 명시되어 있는 컬럼 들을 찝어 m_컬럼 프리픽스를 던져주었다.
<select id="searchPost" resultMap="replyResultMap">
select p.*,m.login_id m_login_id, m.pwd m_pwd,m.party_type m_party_type<!-- 컨스트럭터 디스크리미네이터는 필수여부라 무조건 컬럼으로 뺸다 -->
from m_post2tag mpt, t_post p, t_party m
where mpt.tag_id in (
select id
from t_hashtag
where tag in
<foreach collection="arrUserSearch" item="searchWord" open="(" separator="," close=")">
#{searchWord}
</foreach>
)
and mpt.post_id = p.hierarchy_id
and p.writer_id = m.login_id
</select>
'MyBatis' 카테고리의 다른 글
<forEach> 를 이용한 반복 insert 쿼리문 생성 (0) | 2020.09.08 |
---|---|
resultMap. (0) | 2020.09.08 |
log4jdbc-log4j2 (0) | 2020.08.02 |
MyBatis 에서의 자동증가 (Auto-Increatement, sequence) 값 가져오기. (0) | 2020.07.21 |
Mybatis 콘솔에 쿼리문 및, 결과 출력- (0) | 2020.07.19 |