- 게시판을 스프링+마이바티스 기반으로 짜시오.
- 댓글 까지 완성
- 게시판 페이징을 예습하시오.
<!-- 댓글 입력 -->
<insert id="insertReply" parameterType="BoardVo">
<![CDATA[
insert into mvc_board (bid, bname, btitle, bcontent, bdate, bgroup, bstep, bindent)
values
(mvc_board_seq.nextval,#{bname},#{btitle},#{bcontent},sysdate,#{bgroup},#{bstep}+1,#{bindent}+1)
]]>
</insert>
<!-- 기존에 작성되어 있는 댓글들의 bstep을 수정하는 작업 -->
<update id="updateShape" parameterType="BoardVo">
<![CDATA[
update mvc_board set bstep = bstep + 1 where bgroup = #{bgroup} and bstep > #{bstep}
]]>
</update>
// 댓글 관련
@Override
public void writeReply(BoardVo boardVo) {
log.info("writeReply()..");
boardMapper.updateShape(boardVo);
boardMapper.insertReply(boardVo);
}
//댓글 관련
@GetMapping("/reply_view")
public String replyView(BoardVo boardVo, Model model) {
log.info("replyView()..");
model.addAttribute("reply_view", boardService.showContent(boardVo.getBid()));
return "/board/reply_view";
}
@PostMapping("/reply")
public String reply(BoardVo boardVo) {
log.info("reply()..");
boardService.writeReply(boardVo);
return "redirect:/board/list";
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${reply_view.bid}번 글에 댓글 쓰기</h1>
<form action="${pageContext.request.contextPath}/board/reply" method="post">
<input type="hidden" name="bid" value="${reply_view.bid}">
<input type="hidden" name="bgroup" value="${reply_view.bgroup}">
<input type="hidden" name="bstep" value="${reply_view.bstep}">
<input type="hidden" name="bindent" value="${reply_view.bindent}">
<table border="1" style="width: 500; background-color: gray;">
<tr>
<td style="background-color: pink">글번호</td>
<td style="background-color: white">${reply_view.bid}</td>
<tr>
<td style="background-color: pink">조회수</td>
<td style="background-color: white">
<input type="text" name="bhit" size="50" value="${reply_view.bhit}" readonly="readonly">
</td>
</tr>
<tr>
<td style="background-color: pink">이름</td>
<td style="background-color: white">
<input type="text" name="bname" size="50" value="${reply_view.bname}">
</td>
</tr>
<tr>
<td style="background-color: pink">제목</td>
<td style="background-color: white">
<input type="text" name="btitle" size="50" value="${reply_view.btitle}">
</td>
</tr>
<tr>
<td style="background-color: pink">내용</td>
<td style="background-color: white">
<textarea name="bcontent" rows="10">${reply_view.bcontent}
---[답변내용]---</textarea>
</td>
</tr>
<tr>
<td style="background-color: pink" colspan="2">
<input type="submit" value="답변">
<a href="${pageContext.request.contextPath}/board/list">목록보기</a>
</td>
</tr>
</table>
</form>
</body>
</html>
페이징
페이징에서 활용하기 위해 설정하게 되는 것들
알아야 하는 SQL 문
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY board_id DESC) AS rownum, * FROM board
) WHERE rownum BETWEEN #{startRow} AND #{startRow + pageSize - 1}
SQL 해설
ROW_NUMBER() OVER (ORDER BY board_id DESC) AS rownum
(SELECT ROW_NUMBER() OVER (ORDER BY board_id DESC) AS rownum, * FROM board)
WHERE rownum BETWEEN #{startRow} AND #{startRow + pageSize - 1}
해당 부분까지 찾아보고 나서, 추가로 참조하려고 찾아놓은 다른 사이트 링크