Spring_FrameWork

@Param 어노테이션과 댓글 목록

tmxhsk99 2018. 12. 4. 12:04

댓글의 목록과 페이징 처리는 기존의 게시물 페이징 처리와 유사하지만 추가적으로 특정한 게시물들의 댓글들만을 대상으로 하기 때문에 추가로 게시물의 번호가 필요하게 된다 .


Mybatis는 두개 이상이 데이터를 파라미터로 전달하기 위해서는 

1)  별도의 객체로 구성하거나  

2) Map을 이용하는 방식 

3)@Param을 이용해서 이름을 사용하는 방식이다 . 


@Param의 속성값은 Mybatis  에서 SQL을 이용할 때 '#{ }'의 이름으로 사용이 가능합니다. 


페이징 처리는 기존과 동일하게  Criteria를 이용한다 .

여기에 추가적을 해당 게시물의 번호는 파라미터를 전달하도록 ReplyMapper를 구성합니다. 


ReplyMapper 인터페이스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package org.zerock.mapper;
 
import java.util.List;
 
import org.apache.ibatis.annotations.Param;
import org.zerock.domain.Criteria;
import org.zerock.domain.ReplyVO;
 
public interface ReplyMapper {
    //리플 추가
    void insert(ReplyVO vo);
    //리플 조회 처리
    public ReplyVO read(Long bno);
    //삭제
    public int delete(Long bno);
    //수정 
    public int update (ReplyVO reply);
    //Criteria
    public List<ReplyVO> getListWithPageing(@Param("cri") Criteria cri,@Param("bno") Long bno);
 
}
 
cs

XML로 처리할때는 cri와 bno를 모두 사용할수있다 .


특정게시물의 댓글을 가져오는 것을 작성한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.zerock.mapper.ReplyMapper">
    <insert id="insert">
 
        insert into tbl_reply (rno, bno, reply, replyer)
        values (seq_reply.nextval, #{bno}, #{reply}, #{replyer})
 
    </insert>
    
    <select id="read" resultType ="org.zerock.domain.ReplyVO">
        select * from tbl_reply where rno = #{rno}
    </select>
    
    <delete id = "delete">
        delete from tbl_reply where rno =#{rno}
    </delete>
    
    <update id="update">
        update tbl_reply set reply = #{reply}, updatedate = sysdate where rno = #{rno}
    </update>
    
    <select id="getListWithPaging" resultType="org.zerock.domain.ReplyVO">
    
    select rno, bno, reply, replyer, replyDate, updatedate
    from tbl_reply
    where bno =#{bno}
    order by rno asc
    
    </select>
    
</mapper>
cs


XML에서 '#{bno}'가 @Param("bno")와 매칭되어서 사용되는 점에 유의


테스트코드로 현재 데이터 베이스에 추가 됭있는게시물번호를  확인 

1
2
3
4
5
6
7
8
9
    //댓글목록 
    @Test
    public void testList() {
        Criteria cri = new Criteria();
        //16899L
        List<ReplyVO> replies = mapper.getListWithPaging (cri,bnoArr[0]);
        
        replies.forEach(reply -> log.info(reply));
    }
cs