1. 1 화면단

noticeBoard_4_screen.jpg

2. 1 구상

답변 쓸 게시글 클릭 -> 답변쓰기 클릭 -> 글 작성 후 글쓰기 클릭 -> alert('답변 추가 완료')
와 함께 listArticles.do

조건 1. ~~답변쓸 때 비로그인은 '로그인한 회원만 가능합니다.' 메시지와 함께 로그인으로 이동~~
조건 1. 로그인안할 시 답변쓰기 버튼 안보임
조건 2. 작성 id는 자동으로 로그인한 계정 id + disabled

답변 쓸 게시글 articleNo 가져와 parentNo으로 쓰기
답변 방식은 addNewArticle 방식과 비슷
DB - 추가X
MAPPER - addNewArticle 가져와 변형 [ 답변 쓸 게시글 articleNo가져와 parentNo으로 넣기 ]
DAO - map으로 가져와 (key:parentNO / value:답변쓸 게시글 articleNo) 
(key:articleTpye / value : 답변쓸 게시글 articleType)
SERVICE - 뭐 있나?
CONTROLLER - addNewArticle메서드에 ResopnseEntity 이용?
메서드명은 addChildArticle / @RequestMapping /board/replyForm.do / @RequestBody
JSP - viewArticle.jsp에서 답변쓰기에 href replyForm.do?parentNo={답변쓸 게시글 articleNo}
&&articleType={답변쓸 게시글 articleType}

----------

답글쓰기 -> 비로그인 = 로그인화면이동 / 로그인 = 작성자 input에 member.id 들어가게

noticeBoard_4_1.jpg

noticeBoard_4_1.drawio

3. 구현

3.1 DB

create table t_board(
articleType number(1),
articleNO number(10) primary key,
parentNO  number(10) default 0,
title varchar2(500) not null,
content varchar2(4000),
imageFileName varchar2(100),
writedate date default sysdate not null,
id varchar2(10),
CONSTRAINT FK_ID FOREIGN KEY(id)
REFERENCES t_member(id)
);

3.2 mapper.xml (MyBatis)

<insert id="addReplyArticle"  parameterType="java.util.Map"><!-- 넣을거 -->
		<![CDATA[
			INSERT INTO t_board(articleType, parentNO, articleNO, title, content, id)
			VALUES(#{articleType}, #{parentNO}, #{articleNO}, #{title}, #{content}, #{articleID})
		]]>      
	</insert>
	
  <select id="selectNewArticleNO" resultType="int"  >
		<![CDATA[
			SELECT  nvl(max(articleNO), 0) + 1 from t_board		
		]]>
	</select>

3.3 BoardDAOImpl.class

	@Override
	public void replyArticle(Map articleMap) throws DataAccessException {  // 넣을거
		int articleNO = selectNewArticleNO();
		articleMap.put("articleNO", articleNO);
		sqlSession.insert("mapper.board.addReplyArticle", articleMap);
	}
	
		private int selectNewArticleNO() throws DataAccessException {
		return sqlSession.selectOne("mapper.board.selectNewArticleNO");
	}

3.4 BoardServiceImpl.class

	@Override 
	public void addReplyArticle(Map articleMap) throws Exception{
		boardDAO.replyArticle(articleMap);
	}