[SpringBoot] 스프링부트 + JPA를 이용한 CRUD 구현 6. 삭제 기능 만들기
27 May 2022 -
Less than 1 minute read
🎋 js
먼저, 수정 페이지에 삭제 버튼을 넣어주자.
src/main/resources/templates/posts-update.mustache
<button type="button" class="btn btn-danger" id="btn-delete">삭제</button>
src/main/resources/static/js/app/index.js
var main = {
init : function(){
...
$('#btn-delete').on('click', function(){
_this.delete();
});
},
save : function(){
...
},
update : function(){
...
},
delete : function(){
var id = $('#id').val();
$.ajax({
type: 'DELETE',
url: '/api/posts/'+id,
dataType: 'json',
contentType: 'application/json; charset=utf-8'
}).done(function(){
alert('삭제되었습니다');
window.location.href= '/';
}).fail(function (error){
alert(JSON.stringify(error))
});
}
};
main.init();
🎋 Service
src/main/java/com/test/spring/boot_crud/service/posts/PostsService.java
package com.test.spring.boot_crud.service.posts;
import ...
@RequiredArgsConstructor
@Service
public class PostsService {
...
@Transactional
public void delete(Long id) {
Posts posts = postsRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("해당 게시글이 없습니다."));
postsRepository.delete(posts);
}
}
🎋 Controller
src/main/java/com/test/spring/boot_crud/web/PostsApiController.java
...
@DeleteMapping("/api/posts/{id}")
public Long delete(@PathVariable Long id) {
postsService.delete(id);
return id;
}
...
🎋 Public Key Retrieval is not allowed 에러
어휴 ㅋ 이젠 짜증도 안난다
application.properties
로 가서 allowPublicKeyRetrieval=true
를 추가해주자.
예전에 JDBC 공부했을 때 봤던 내용. -> velog-JDBC 사용하기
spring.datasource.url=jdbc:mysql://localhost:3306/boottest?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
allowPublicKeyRetrieval=true : 8.0 이후 설정 추가해야 오류가 발생하지 않는다!!