1. 1 화면단

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.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>
- <insert id=”addReplyArticle” parameterType=”java.util.Map”>
답글 추가 쿼리문 / 파라미터는 Map으로 받음
- <select id="selectNewArticleNO" resultType="int"> : 반환타입 int → addReplyArticle의 articleNO을 넣기 위함
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");
}
- selectNewArticleNO() : 새로운 articleNO을 받기 위함
3.4 BoardServiceImpl.class
@Override
public void addReplyArticle(Map articleMap) throws Exception{
boardDAO.replyArticle(articleMap);
}