[B -2-28] Ajax 댓글 처리 1

2019. 10. 4. 22:59Project B (SPMS)/Project B 파트5

반응형

댓글 처리를 위한 영속 영역

 

SQL 실행

...더보기
-- 댓글 테이블 생성
create table TBL_REPLY (
  RNO number(10,0), 
  BNO number(10,0) not null,
  REPLY varchar2(1000) not null,
  REPLYER varchar2(50) not null, 
  REPLYDATE date default SYSDATE, 
  UPDATEDATE date default SYSDATE
);

-- 댓글 시퀀스 생성
create sequence SEQ_REPLY;

-- 댓글 테이블 PK 제약조건 추가
alter table TBL_REPLY 
add constraint PK_REPLY 
primary key (RNO);

-- 댓글 테이블과 게시판 테이블 관계 연결 
alter table TBL_REPLY
add constraint FK_REPLY_BOARD  
foreign key (BNO) 
references  TBL_BOARD (BNO); 

TBL_REPLY 테이블은 BNO라는 컬럼을 이용해서 해당 댓글이 어떤 게시물의 댓글인지를 명시하도록 한다.

댓글 자체단독으로 CRUD가 가능하므로, 별도의 PK를 부여하도록 하고 외래후보키(FK) 설정을 통해서 TBL_BOARD 테이블을 참조하도록 설정한다.


ReplyVO 클래스의 추가

 

src/main/java

com.spms.domain

ReplyVO.java

 

...더보기
package com.spms.domain;

import java.util.Date;

import lombok.Data;

@Data
public class ReplyVO {

  private Long rno;
  private Long bno;

  private String reply;
  private String replyer;
  private Date replyDate;
  private Date updateDate;

}

 


src/main/java

com.spms.mapper

ReplyMapper.java 인터페이스

 

...더보기
package com.spms.mapper;

public interface ReplyMapper {
	
}

src/main/resources

com

spms

mapper

ReplyMapper.xml

 

...더보기
<?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">


</mapper>

특정 게시물 번호(bno)에 해당하는 모든 댓글을 가져오는 형태로 작성한다.

 


ReplyMapper 테스트

 

src/test/java

com.spms.mapper

ReplyMapperTests.java

 

...더보기
package com.spms.mapper;

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 lombok.Setter;
import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {com.spms.config.RootConfig.class} )
@Log4j
public class ReplyMapperTests {

	@Setter(onMethod_ = @Autowired)
	private ReplyMapper replyMapper;
	
	@Test
	public void testMapper() {
		log.info(replyMapper);
	}
	
}

 

개발 초기에는 테스트 코드를 작성하는게 귀찮게 느껴지지만 가능하면 팀 전체가 테스트 코드를 습관적으로 작성하는 노력을 해야한다.

 


ReplyMapper 유닛 테스트

 

...더보기
INFO : com.spms.mapper.ReplyMapperTests - org.apache.ibatis.binding.MapperProxy@495b0487
INFO : org.springframework.context.support.GenericApplicationContext - Closing org.springframework.context.support.GenericApplicationContext@57536d79: startup date [Fri Oct 04 22:44:52 JST 2019]; root of context hierarchy
INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
INFO : jdbc.connection - 1. Connection closed
INFO : jdbc.audit - 1. Connection.close() returned 
INFO : jdbc.connection - 2. Connection closed
INFO : jdbc.audit - 2. Connection.close() returned 
INFO : jdbc.connection - 4. Connection opened
INFO : jdbc.audit - 4. Connection.new Connection returned 
INFO : jdbc.audit - 4. Connection.setReadOnly(false) returned 
INFO : jdbc.audit - 4. Connection.setAutoCommit(true) returned 
INFO : jdbc.connection - 3. Connection closed
INFO : jdbc.audit - 3. Connection.close() returned 
INFO : jdbc.connection - 4. Connection closed
INFO : jdbc.audit - 4. Connection.close() returned 
INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.

 

반응형

'Project B (SPMS) > Project B 파트5' 카테고리의 다른 글

[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
[B -2-29] Ajax 댓글 처리 2  (0) 2019.10.06
[B -2-27] REST 방식으로 전환  (0) 2019.10.04