[B -2-33] Ajax 댓글 처리 6
2019. 10. 6. 21:54ㆍProject B (SPMS)/Project B 파트5
반응형
@Param 어노테이션과 댓글 목록
src/main/java
com.spms.mapper
ReplyMapper.java 인터페이스
getListWithPaging()
...더보기
package com.spms.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.spms.domain.Criteria;
import com.spms.domain.ReplyVO;
public interface ReplyMapper {
public int insert(ReplyVO vo);
public ReplyVO read(Long bno);
public int delete(Long rno);
public int update(ReplyVO reply);
public List<ReplyVO> getListWithPaging(@Param("cri") Criteria cri, @Param("bno") Long bno);
}
댓글 목록과 페이징 처리는 기존 게시물 페이징 처리와 유사하지만, 추가적으로 특정 게시물의 댓글들만을 대상으로 하기때문에 추가로 게시물 번호가 필요하게 된다.
마이바티스는 두 개 이상의 데이터를 파라미터로 전달하기 위해서는 다음과 같은 방식이 있다.
1) 별도의 객체로 구성
2) Map 이용
3) @Param 이용
위 방식중에 3번 방식이 제일 간단하게 사용할 수 있다.
@Param의 속성값은 마이바티스에서 SQL을 이용할 때 #{ }의 이름으로 사용가능하다
페이징 처리는 기존과 동일하게 Criteria를 이용한다.
여기에 추가적으로 해당 게시물의 번호는 파라미터를 전달하도록 ReplyMapper를 구성한다.
src/main/resources
com
spms
mapper
ReplyMapper.xml
getListWithPaging()
...더보기
<?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="com.spms.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="com.spms.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="com.spms.domain.ReplyVO">
select RNO, BNO, REPLY, REPLYER, REPLYDATE, UPDATEDATE
from TBL_REPLY
where bno = #{bno}
order by RNO asc
</select>
</mapper>
XML에서 #{bno} 가 @Param("bno") 와 매칭되서 사용되는 점에 주목해야 한다.
src/test/java
com.spms.mapper
ReplyMapperTests.java
testList()
...더보기
package com.spms.mapper;
import java.util.List;
import java.util.stream.IntStream;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.spms.domain.Criteria;
import com.spms.domain.ReplyVO;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {com.spms.config.RootConfig.class} )
@Log4j
public class ReplyMapperTests {
private Long[] bnoArr = { 524313L, 524312L, 524311L, 524310L, 524309L };
@Setter(onMethod_ = @Autowired)
private ReplyMapper replyMapper;
public void testMapper() {
log.info(replyMapper);
}
public void testCreate() {
IntStream.rangeClosed(1, 10).forEach(i -> {
ReplyVO replyVO = new ReplyVO();
replyVO.setBno(bnoArr[i % 5]);
replyVO.setReply("댓글 테스트! " + i);
replyVO.setReplyer("작성자" + i);
replyMapper.insert(replyVO);
});
}
public void testRead() {
Long targetRno = 5L;
ReplyVO replyVO = replyMapper.read(targetRno);
log.info(replyVO);
}
public void testDelete() {
Long targetRno = 7L;
replyMapper.delete(targetRno);
}
public void testUpdate() {
Long targetRno = 10L;
ReplyVO replyVo = replyMapper.read(targetRno);
replyVo.setReply("Update Reply");
int count = replyMapper.update(replyVo);
log.info("UPDATE COUNT : " + count);
}
@Test
public void testList() {
Criteria cri = new Criteria();
List<ReplyVO> replies = replyMapper.getListWithPaging(cri, bnoArr[0]);
replies.forEach(reply -> log.info(reply));
}
}
댓글 목록 유닛 테스트
...더보기
|----|-------|-----------|--------|----------------------|----------------------|
|rno |bno |reply |replyer |replydate |updatedate |
|----|-------|-----------|--------|----------------------|----------------------|
|12 |524313 |댓글 테스트! 10 |작성자10 |2019-10-06 20:15:44.0 |2019-10-06 20:15:44.0 |
|----|-------|-----------|--------|----------------------|----------------------|
반응형
'Project B (SPMS) > Project B 파트5' 카테고리의 다른 글
[B -2-35] Ajax 댓글 처리 8 (0) | 2019.10.06 |
---|---|
[B -2-34] Ajax 댓글 처리 7 (0) | 2019.10.06 |
[B -2-32] Ajax 댓글 처리 5 (0) | 2019.10.06 |
[B -2-31] Ajax 댓글 처리 4 (0) | 2019.10.06 |
[B -2-30] Ajax 댓글 처리 3 (0) | 2019.10.06 |