๐ธcollection : 1:N ๊ด๊ณ์ ํ
์ด๋ธ ์กฐ์ธ์์ ๊ฒ์ํ์ ์ปฌ๋ผ๊ฐ์ผ๋ก List ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ resultMap ์๋ฆฌ๋จผํธ์ type ์์ฑ๊ฐ์ผ๋ก ์ค์ ๋ ํด๋์ค์ ๊ฐ์ฒด ํ๋์ ์ ์ฅํ๋ ์๋ฆฌ๋จผํธ
=> ํ์ ์๋ฆฌ๋จผํธ๋ก id ์๋ฆฌ๋จผํธ ๋๋ result ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ํ์ ์ปฌ๋ผ๊ฐ์ List ๊ฐ์ฒด ์์(Java ๊ฐ์ฒด)์ ํ๋์ ์ ์ฅ๋๋๋ก ์ค์
โช๏ธ property ์์ฑ : collection ์๋ฆฌ๋จผํธ๋ก ์์ฑ๋ List ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ํด๋์ค์ ํ๋๋ช
์ ์์ฑ๊ฐ์ผ๋ก ์ค์
โช๏ธ ofType ์์ฑ : List ๊ฐ์ฒด์ ์ ์ฅ๋ ์์(Java ๊ฐ์ฒด)์ ์๋ฃํ์ ์์ฑ๊ฐ์ผ๋ก ์ค์
=> Java ์๋ฃํ ๋์ typeAlias ์๋ฆฌ๋จผํธ๋ก ์ค์ ํ ๋ณ์นญ(AliasName) ์ฌ์ฉ ๊ฐ๋ฅ
๐ฉ๐ป์ค์ต ์์
๊ฒ์๊ธ ํ ๊ฐ ๋น 0๊ฐ ์ด์์ ๋๊ธ์ด ์์. ์ด๋ด ๋ ๋๊ธ์ ์ฌ๋ฌ ๊ฐ๊ฐ ๋ ์ ์์ผ๋ List ๊ฐ์ฒด๋ก ํ๋์ ์ ์ฅํด์ผํจ.
์ด ๋ ๊ฒ์ํ๋ค์ List ๊ฐ์ฒด๋ก ํ๋์ ๊ฐ์ ์ ์ฅํ๋ ค๋ฉด collection ์๋ฆฌ๋จผํธ๊ฐ ํ์ํจ.
(์ฐธ๊ณ ๋ก ๊ฒ์๊ธ์ ๊ทธ๋ฅ ๊ฐ์ฒด๋ก ๊ฐ์ ์ ์ฅํ๋ฉด ๋๋๊น association ์ฌ์ฉํจ.
โฌ๏ธ๋งคํผ ํ์ผ์ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ์์ฑํ ์ ์์.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋!!!!
โญ ๋ฌธ์ ์ : resultMap ์๋ฆฌ๋จผํธ์ ์ฒซ๋ฒ์งธ ํ์ ์๋ฆฌ๋จผํธ๋ก association ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ํ๋์ ๊ฒ์ํ์ผ๋ก Java ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ ๊ณตํ์ง๋ง ๋ค์์ ํ์ด ๊ฒ์๋๋ฉด TooManyResultsException ๋ฐ์
โญํด๊ฒฐ๋ฒ : ๋ค์์ ํ์ด ๊ฒ์๋๋ ๊ฒฝ์ฐ resultMap ์๋ฆฌ๋จผํธ์ ์ฒซ๋ฒ์งธ ํ์ ์๋ฆฌ๋จผํธ๋ก association ์๋ฆฌ๋จผํธ์ธ์ ๋ค๋ฅธ ์๋ฆฌ๋จผํธ(constructor, id, result)๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ
<resultMap type="MyCommentReply" id="myCommentReplyResultMap">
<!-- ์ด id ์๋ฆฌ๋จผํธ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด TooManyResultsException ๋ฐ์ -->
<id column="comment_no" property="commentNo"/>
<association property="comment" javaType="MyComment1">
<id column="comment_no" property="commentNo"/>
<result column="comment_id" property="commentId"/>
<result column="comment_content" property="commentContent"/>
<result column="comment_date" property="commentDate"/>
</association>
<collection property="replyList" ofType="MyReply">
<id column="reply_no" property="replyNo"/>
<result column="reply_id" property="replyId"/>
<result column="reply_content" property="replyContent"/>
<result column="reply_date" property="replyDate"/>
<result column="reply_comment_no" property="replyCommentNo"/>
</collection>
</resultMap>
<!-- ๊ฒ์๊ธ๋ฒํธ๋ฅผ ์ ๋ฌ๋ฐ์ MYCOMMENT ํ
์ด๋ธ์ ์ ์ฅ๋ ํ๊ณผ MYREPLY ํ
์ด๋ธ์ ์ ์ฅ๋ ํ์
1:N ๊ด๊ณ๋ก ๊ฒฐํฉ๋๋๋ก ๊ฒ์ํ์ฌ Java ๊ฐ์ฒด(MyCommentReply ๊ฐ์ฒด)๋ก ์ ๊ณตํ๋ ์๋ฆฌ๋จผํธ -->
<select id="selectCommentReply" parameterType="int" resultMap="myCommentReplyResultMap">
select comment_no, comment_id, comment_content, comment_date, reply_no, reply_id
, reply_content, reply_date, reply_comment_no from mycomment left join myreply on
comment_no=reply_comment_no where comment_no=#{commentNo} order by reply_no desc
</select>