1. 비즈니스 로직
BoardMapper.xml
<!
<update id="deleteBoard" parameterType="long">
UPDATE
TB_Board
SET
delete_yn = 'Y'
, delete_time = sysdate
WHERE
idx =
</update>
BoardMapper.java
public int deleteBoard(Long idx);
BoardService.java
public boolean deleteBoard(Long idx);
BoardServiceImpl.java
@Override
public boolean deleteBoard(Long idx) {
int queryResult = 0;
BoardDTO board = boardMapper.selectBoardDetail(idx);
if ( board != null && "N".equals(board.getDeleteYn()) ) {
queryResult = boardMapper.deleteBoard(idx);
}
return (queryResult == 1) ? true : false;
}
"N".equals(board.getDeleteYn() = false
가 생기길래, 1시간 넘게 씨름했는데..
초기에 컬럼 설정할 때, xxx_yn char(4)
로 했었다. char()는 크기가 고정적일 때만 사용하는 거래서, 그냥 벗어나지 않게 잘 하면되는 줄 알았더니, 'N '
띄어쓰기로 4byte 꽉 채워서 입력되어 있었다..ㅠ...!!!! 찾아낸 후 xxx_yn char(1)
로 변경했다. 조심하자...
BoardController.java
- 컨트롤러도 기본의
게시글 등록
을 수정하여 사용한다.
@PostMapping(value = "/board/delete.do")
public String deleteBoard(@RequestParam(value = "idx", required = false) Long idx) {
System.out.println("/board/delete.do 접근. idx = " + idx);
if (idx == null) {
return "redirect:/board/list.do";
}
try {
System.out.println("try 접근. idx = " + idx);
boolean isDeleted = boardService.deleteBoard(idx);
System.out.println("deleteBoard 실행 후. isDeleted = " + isDeleted);
if (isDeleted == false) {
}
} catch (DataAccessException e) {
} catch (Exception e) {
}
return "redirect:/board/list.do";
}
2. 인터페이스
write.html
- 기존의
write.html
맨 밑에(<html>
태그 안에) 삭제 confirm을 물어보고, 폼을 생성해서 실행하는 스크립트 작성.
<th:block layout:fragment="script">
<script th:inline="javascript">
<![CDATA[*/
function deleteBoard(idx) {
if (confirm(idx + "번 게시글을 삭제할까요?")) {
var uri = ;
var html = "";
html += '<form name="dataForm" action="' + uri + '" method="post">';
html += '<input type="hidden" name="idx" value="' + idx + '" />';
html += '</form>';
$("body").append(html);
document.dataForm.submit();
}
}
]]>*/
</script>
</th:block>
</html>
- 삭제 버튼에는 스크립트가 실행되도록 onclick 옵션을 걸어뒀음.
3. 확인
/board/list.do
감사합니다 많은 도움이 되었습니다!