목차
- Spring Ajax 댓글 기능 게시판
▶ Spring Ajax 댓글 기능 게시판
1) 댓글 작성
- 데이터를 입력할 때, 키 값을 가져와서 증가시켜서 입력하거나 혹은 입력 후에 증가된 키 값을 가져올 수 있다. 게시글의 상세 페이지에서 댓글을 작성(insert)을 작성할 때 댓글 번호 값을 1 증가시켜야 하는데, MyBatis에서 제공하는 selectKey를 이용하면 별도의 쿼리 로직을 등록할 필요 없이 해당 메소드에서 일괄 처리할 수 있다.
• selectKey
- insert 문에서만 사용이 가능하다.
- 하나의 insert문에 하나의 selectKey만 사용 가능하다.
- selectKey는 insert 구문이 실행되기 전(before) 또는 후(after)로 나누어서 사용할 수 있다.
• selectKey 엘리먼트 속성
① keyProperty: selectKey구문의 결과가 저장될 대상 프로퍼티
② order: berfore또는 after를 세팅할 수 있다. berfore로 설정하면 키를 먼저 조회하고 그 값을 keyProperty에 저장한 뒤 insert 구문을 실행한다. after로 설정하면 insert 구문을 실행한 뒤 selectKey 구문을 실행한다.
③ resultType: 반환되는 결과의 타입.
④ keyColumn: 리턴되는 결과셋의 컬럼명은 프로퍼티와 일치한다. 여러개의 컬럼을 사용한다면 컬럼명의 목록은 콤마를 사용해서 구분한다.
⑤ statementType: statement, prepared 또는 callable 중 하나를 선택할 수 있다. 디폴트는 prepared이다.
• 예시
1
2
3
4
5
6
7
|
<insert id="insert" parameterType="rb">
<selectKey keyProperty="rno" order="BEFORE" resultType="int"> <!-- order="BEFORE" : 먼저 실행 -->
select nvl(max(rno),0) + 1 from replyBoard
</selectKey>
insert into replyBoard values (#{rno},#{bno},#{replytext},
#{replyer},sysdate,sysdate)
</insert>
|
cs |
2) 댓글 수정/삭제
- ‘수정’ 버튼을 누르면 댓글이 출력되었던 공간이 textarea로 바뀌면서 내용이 담기도록 한다.
- ‘삭제’ 버튼을 누르면 부모글인 게시글의 번호와 댓글의 번호를 전달해서 삭제한다.
- 수정과 삭제 후에는 다시 댓글 목록을 호출해서 보이도록 한다.
• 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="header.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
$(function() {
$('.edit1').click(function() {
var id = $(this).attr('id'); // rno
var txt = $('#td_'+id).text(); // replytext
$('#td_'+id).html("<textarea rows='3' cols='30' id='tt_"+id+"'>"+txt
+"</textarea>");
$('#btn_'+id).html(
"<input type='button' value='확인' onclick='up("+id+")'> "
+"<input type='button' value='취소' onclick='lst()'>");
});
});
function up(id) {
var replytext = $('#tt_'+id).val();
var formData = "rno="+id+'&replytext='+replytext
+"&bno=${board.num}";
$.post('${path}/repUpdate',formData, function(data) {
$('#slist').html(data);
});
}
function lst() {
$('#slist').load('${path}/slist/num/${board.num}');
}
function del(rno,bno) {
var formData="rno="+rno+"&bno="+bno;
$.post("${path}/repDelete",formData, function(data) {
$('#slist').html(data);
});
}
</script>
</head>
<body>
<div class="container" align="center">
<h2 class="text-primary">댓글</h2>
<table class="table table-bordered">
<tr>
<td>작성자</td>
<td>내용</td>
<td>수정일</td>
<td></td>
</tr>
<c:forEach var="rb" items="${slist}">
<tr>
<td>${rb.replyer}</td>
<td id="td_${rb.rno}">${rb.replytext}</td>
<td>${rb.updatedate }</td>
<td id="btn_${rb.rno}">
<c:if test="${rb.replyer==board.writer }">
<input type="button" value="수정" class="edit1" id="${rb.rno}">
<input type="button" value="삭제" onclick="del(${rb.rno},${rb.bno})">
</c:if></td>
</tr>
</c:forEach>
</table>
</div>
</body>
</html>
|
cs |
'Spring' 카테고리의 다른 글
101일차: Spring Boot 실습(1)_2021.11.10 (0) | 2021.11.10 |
---|---|
100일차: Spring Boot 기초_2021.11.09 (0) | 2021.11.10 |
98일차: Spring 검색 게시판 / Ajax 댓글 게시판_2021.11.05 (0) | 2021.11.05 |
97일차: Spring 회원관리(로그인,비밀번호 찾기,수정,삭제) / 검색 기능 게시판_2021.11.04 (0) | 2021.11.04 |
96일차: Spring 댓글 게시판(수정, 삭제) / 이메일 인증 / 회원 관리_2021.11.03 (0) | 2021.11.03 |