728x90
스프링부트 삭제,상세,수정 수업 정리 3
이전내용 이어서 정리
삭제 기능
JpaController.java
@RequestMapping(value="/jpa/memberDelete", method = RequestMethod.GET)
public String memberDelete(@RequestParam(value = "num",required = false) Integer num){
System.out.println(num);
memberRepository.deleteById(num);
return "redirect:/";
}
memberList.html
<script>
// 삭제 클릭 시 --> 컨펌 후 --> 할 일 처리
function btnDel( num ) {
// 컨펌 처리
if( confirm( num + "번 회원을 정말 삭제하시겠습니까?") == true ) {
location.href = '/jpa/memberDelete?num=' + num;
}
else {
return;
}
}
</script>
상세 기능
JpaController.java
@RequestMapping(value="/jpa/memberDetail", method = RequestMethod.GET)
public String memberDetail(@RequestParam(value = "num",required = false) Integer num,
Model model){
System.out.println(num);
Member member = memberRepository.findById(num).orElse(null);
model.addAttribute("member", member);
return "jpa/memberDetail";
}
memberDetail.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Member Detail</title>
</head>
<body>
<h2>Member Detail</h2>
<p>
<a href="#" onClick="history.back(-1); return false;" style="text-decoration: none">← Back</a> /
아래는 <span th:text="${member.num}" style="color: red; font-weight: bold">3</span>번 회원의 정보입니다.
</p>
<table cellpadding=10 border=1 width=600 th:object="${member}">
<tr>
<td>Num</td>
<td th:text="${member.num}">3</td>
</tr>
<tr>
<td>Name</td>
<td th:text="${member.name}">홍길동</td>
</tr>
<tr>
<td>ID</td>
<td th:text="${member.id}">mr.hong</td>
</tr>
<tr>
<td>Phone</td>
<td th:text="${member.phone}">010-123-4567</td>
</tr>
</table>
</body>
</html>
history 객체
자바스크립트에서 history 객체는 브라우저의 history 정보(사용자가 방문한 URL 정보)를 저장하는 객체입니다. 사용자의 개인정보를 보호하기 위하여 history 객체에 접근하는 방법을 일부분 제한하기도 합니다. 또한 예약어이기 때문에 변수명으로 사용하지 않는 걸 추천합니다. history 목록으로 접근하는 방법으로 크게 3가지가 있습니다.
history.back()
<!-- 이전페이지로 이동 -->
<a href="javascript:history.back();">이전 페이지로 이동</a>
현재페이지에서 바로 이전의 페이지로 돌아가는 메서드입니다.
history.forword()
<!-- 다음페이지로 이동 -->
<a href="javascript:history.forword();">다음페이지로 이동</a>
현재 페이지에서 다음 페이지로 이동하는 메서드입니다. 다음 페이지가 없을 경우 동작하지 않습니다.
출처: https://ssd0908.tistory.com/entry/javascript-historyback-이전-페이지로-돌아가기 [에스제이:티스토리]
출력화면 ▼
수정 기능
JpaController.java
@RequestMapping(value="/jpa/memberWrite", method= RequestMethod.GET)
public String memberWrite(
@RequestParam(value="num", required = false) Integer num,
Model model) {
if(num != null){
//기존회원 -> 수정
Member member = memberRepository.findById(num).orElse(null);
model.addAttribute("memberDTO", member);
model.addAttribute("formTitle", "Modification");
}else{
//신규회원
System.out.println("신규");
model.addAttribute("memberDTO" , new MemberDTO());
model.addAttribute("formTitle", "Registration");
}
return "jpa/memberWriteForm";
}
@RequestMapping(value="/jpa/memberWrite", method= RequestMethod.POST)
public String memberWrite(MemberDTO memberDTO, Model model) {
try {
System.out.println(memberDTO);
//memberDTO를 -> Entity로 변경
Member save = memberDTO.toEntity();
//Repository를 이용한 DB작업
Member saved = memberRepository.save(save);
System.out.println(saved);
}catch(Exception e) {
e.printStackTrace();}
return "redirect:/";
}
출력화면 ▼
쿼리로 수정
레파지토리에 추가
MemberRepository.java
@Transactional
@Modifying
@Query( "UPDATE Member m SET m.name = :name, m.age = :age WHERE m.num = :num" )
int updateMemberQuery(@Param("num") Integer num, @Param("name") String name, @Param("age") Integer age );
// [2] : @Query 애너테이션 + JPQL을 사용 --> LIKE 콜론(:) 파라미터 바인딩
@Query( "SELECT m FROM Member m WHERE (m.name LIKE %:name%) AND (m.age BETWEEN :from AND :to) ORDER BY m.name ASC" )
Page<Member> findMembers( @Param("name") String name, @Param("from") Integer from, @Param("to") Integer to, Pageable pageable );
실제실행쿼리가 되는 코드 작성
쿼리설명 링크 : https://jforj.tistory.com/90
JpaController.java
@RequestMapping(value = "/jpa/memberWrite", method = RequestMethod.POST)
public String memberWrite(MemberDTO memberDTO, Model model){
try {
if(memberDTO.getNum()==0) {
System.out.println(memberDTO);
//memberDTO를 entity로
Member save = memberDTO.toEntity();
//Repository를 이용한 db작업
Member saved = memberRepository.save(save);
}else {
Integer saved = memberRepository.updateMemberQuery(memberDTO.getNum(), memberDTO.getName(), memberDTO.getAge());
}
}catch (Exception e){
System.out.println(e);
e.printStackTrace();
}
return "redirect:/";
}
728x90
'STUDY > SpringBoot' 카테고리의 다른 글
Spring Boot - grpc client 바이너리 데이터 전송 (1) | 2024.10.23 |
---|---|
Spring Boot - kafka producer 예제 (0) | 2024.10.11 |
[Springboot] 22-09-29 페이징 기능 수업 -2 (0) | 2022.09.29 |
[Springboot] 22-09-28 페이징 기능 수업 -1 (0) | 2022.09.28 |
[SpringBoot] 22-09-27 Thymeleaf 문법 총 정리 (0) | 2022.09.27 |