게으른 완벽주의자의 개발자 도전기
[board] 게시글 등록(sequence), 상세조회하기 본문
1. mapper
게시글 등록
<insert id="regBoard">
INSERT INTO SPRING_BOARD
(BOARD_NUM
,TITLE
, WRITER
, CONTENT
) VALUES(
BOARD_NUM_SEQ.NEXTVAL
, #{title}
, #{writer}
, #{content}
)
</insert>
상세페이지
<select id="boardDetail" resultMap="board">
SELECT BOARD_NUM
, TITLE
, CONTENT
, WRITER
, TO_CHAR(CREATE_DATE, 'YYYY.MM.DD') AS CREATE_DATE
FROM SPRING_BOARD
WHERE BOARD_NUM = #{boardNum}
</select>
sequence
CREATE SEQUENCE BOARD_NUM_SEQ
START WITH 1
INCREMENT BY 1
NOCACHE;
(시퀀스 사용하다보면 갑자기 숫자가 +20이 될 때가 있다.
그때 NOCACHE를 사용하여 방지 가능하다)
다음 BOARD_NUM 검색하기
SELECT BOARD_NUM_SEQ.NEXTVAL FROM DUAL;
시퀀스 테이블 삭제
DROP SEQUENCE BOARD_NUM_SEQ;
2. 인터페이스, serviceimpl
게시글등록
void regBoard(BoardVO board);
상세페이지
BoardVO boardDetail(int boardNum);
게시글 등록
@Override
public void regBoard(BoardVO board) {
sqlSession.insert("boardMapper.regBoard", board);
}
상세페이지
@Override
public BoardVO boardDetail(int boardNum) {
return sqlSession.selectOne("boardMapper.boardDetail", boardNum);
}
3. controller
게시글 등록
@PostMapping("/regBoard")
★커맨드 객체 (BoardVO boardVO)
1. 넘어오는 데이터를 받는 역할 2. 데이터를 다음 페이지에 넘기지 않아도 자동으로 넘어감
데이터가 넘어갈 때 이름은 클래스명에서 앞글자만 소문자로 바뀐 이름으로 넘어간다
public String regBoard(BoardVO board) {
(매개변수에 form태그로 넘겨온 데이터 받음(BoardVO안에 변수명과 같으면 받아온다))
boardService.regBoard(board);
return "board/reg_alert";
}
상세보기 페이지
@GetMapping("/boardDetail")
넘어오는 데이터의 이름과 매개변수의 이름을 일치시키면 매개변수에 자동으로 데이터가 넘어온다
매개변수에 @RequestParam 사용 시 넘어오는 데이터에 대한 설정 할 수 있다
@RequestParam(required = false 또는 true) - 넘어오는 데이터의 필수 여부 지정
1) (required = false, defaultValue = "10")
->넘어오는 데이터가 없을 때 기본값으로 10 넣어 줘(기본값 지정)
2) (name = "num") 넘어오는 데이터의 이름과 매개변수 이름이 다를 때 사용하여 바인딩 시킨다
-> 이름이 num으로 넘어오는 데이터를 boardNum에 넣어달라
public String boardDetail(@RequestParam(required = false, defaultValue = "10"
, name = "num") int boardNum, Model model) {
상세정보 조회
boardService.boardDetail(boardNum);
데이터 보내기
model.addAttribute("boardDetail", boardService.boardDetail(boardNum));
return "board/board_detail";
}
4. Html
1) 글쓰기
<h3 align="center">글쓰기</h3>
<form action="/board/regBoard" method="post">
<table border="1">
<tr>
<td>제목 </td>
<td> <input type="text" name="title"> </td>
<td>작성자</td>
<td> <input type="text" name="writer"> </td>
</tr>
<tr>
<td>내용</td>
<td colspan="3"> <textarea rows="5" cols="6" name="content"></textarea></td>
</tr>
</table>
<div align="center" >
<input type="submit" value="등록하기">
</div>
</form>
</body>
2) 상세조회
<h2 align="center">상세페이지</h2>
<table>
<tr>
<td>글번호</td>
<td th:text="${boardDetail.boardNum}"></td>
<td>글제목</td>
<td th:text="${boardDetail.title}"></td>
<td>작성일자</td>
<td th:text="${boardDetail.createDate}"></td>
<td>작성자</td>
<td th:text="${boardDetail.writer}"></td>
</tr>
<tr>
<td>내용</td>
<td colspan="7" th:text="${boardDetail.content}"></td>
</tr>
</table>
<div align="center">
<input type="button" value="목록" th:onclick= "|location.href='@{/board/list}'|">
<input type="button" value="수정" th:onclick="|location.href ='@{/board/modifyForm(boardNum=${boardDetail.boardNum})}'|">
<input type="button" value="삭제" th:onclick="|location.href ='@{/board/delete(boardNum=${boardDetail.boardNum})}'|">
</div>
</body>
'Spring Boot' 카테고리의 다른 글
[ajax] 학생정보시스템 점수상세페이지, 점수등록 (0) | 2022.09.12 |
---|---|
[Ajax] 학생정보시스템 목록 조회, 학급별 목록 조회 (insertAdjacentHTML) (0) | 2022.09.12 |
[board] 게시글 수정, 삭제 (0) | 2022.09.12 |
[board] 게시판 목록 페이지 조회(게시판 목록, 페이지 수 표시, 게시글 검색, a태그) (0) | 2022.09.12 |
spring boot 기초, Thymeleaf 기초 (each, status) (0) | 2022.08.29 |