👀 modify 페이지 출력 - selectOne
- controller
@Autowired
web_repo wr; //interface load
//회원 정보 수정 JPA
@PostMapping("/checkout/member_modify")
public String member_modify(int uidx, Model m, ServletResponse res) {
res.setContentType("text/html;charset=utf-8");
try {
List<jpa_dao> oneData= wr.findByUidx(uidx);
if(oneData.get(0)==null) {
System.out.println("해당 데이터가 없습니다.");
}else {
m.addAttribute("oneData", oneData);
}
} catch (Exception e) {
e.getStackTrace();
}
return "/checkout/member_modify.html";
}
- /checkout/member_modify.html
<!-- 불필요한 코드는 생략 -->
<body class="bg-light">
<form id="frm" class="needs-validation">
<input type="hidden" name="uidx" th:value="${oneData.get(0).uidx}">
<div class="container">
<div class="py-5 text-center">
<h2>회원 수정</h2>
<p class="lead">회원 수정 샘플 페이지</p>
</div>
<div class="order-md-0">
<h4 class="mb-3">MEMBER-MODIFY</h4>
<div class="row">
<div class="col-md-6 mb-3">
<label for="firstName">고객명</label>
<!-- Controller에서 html로 value 적용시 th:value 속성 이용 -->
<input type="text" class="form-control" id="mname" name="uname"
th:value="${oneData.get(0).uname}" readonly="readonly">
</div>
<div class="col-md-6 mb-3">
<label for="lastName">아이디</label> <input type="text"
class="form-control" id="mid" name="uid"
style="margin-right: 5px" th:value="${oneData.get(0).uid}"
readonly="readonly">
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label for="firstName">신규 패스워드</label> <input type="password"
class="form-control" id="mpass" name="upass"
placeholder="패스워드를 입력하세요.">
</div>
<div class="col-md-6 mb-3">
<label for="lastName">신규 패스워드 확인</label> <input type="password"
class="form-control" id="mpass2" placeholder="동일한 패스워드를 입력하세요.">
</div>
</div>
<div class="mb-3">
<label for="username">연락처</label> <input type="text"
class="form-control" style="margin-right: 5px" id="mtel"
name="utel" th:value="${oneData.get(0).utel}" required>
</div>
<div class="mb-3">
<label for="email">이메일</label> <input type="email"
class="form-control" id="email" name="uemail"
th:value="${oneData.get(0).uemail}" required="required">
</div>
<div class="mb-3">
<label for="address">주소</label>
<div class=" input-group input-group-prepend">
<input type="text" class="form-control" style="margin-right: 5px"
id="post" name="upost" th:value="${oneData.get(0).upost}"
readonly>
<button class="btn btn-secondary" type="button"
onclick="sample2_execDaumPostcode()">주소 찾기</button>
</div>
<input type="text" class="form-control" style="margin-top: 5px"
id="address" name="uaddr1" th:value="${oneData.get(0).uaddr1}"
readonly> <input type="text" class="form-control"
style="margin-top: 5px" id="address_detail" name="uaddr2"
th:value="${oneData.get(0).uaddr2}" required>
</div>
<div class="mb-3">
<label for="address2">프로필 이미지 <span class="text-muted">(선택)</span></label><br>
<em th:if="${oneData.get(0).uimg == null}"> <input type="file"
id="file" name="files" placeholder="대표 이미지">
</em>
</div>
</div>
<hr class="mb-4">
<button class="btn btn-primary btn-lg btn-block" type="button"
onclick="member_modifyok()">회원 정보 수정</button>
</div>
</form>
</body>
- web_repo.java (interface) 추가
public interface web_repo extends JpaRepository<jpa_dao, Integer>{
@Query("select now()")
String mysql_times();
//요거 추가함
List<jpa_dao> findByUidx(int uidx);//한 개의 정보만 출력
}
👀 modify - 개인정보 수정 update
🤷♂️❓
findById : primary key(@Id를 의미) => select * from member_ship where uidx=?;
orElse : select 시 값이 없을 경우 null로 반환하는 return 메소드(findById에서만 사용 가능)
- Controller
//회원 정보 수정 update
//post 전용, produces 언어셋(JSON, XML, HTML(Thymeleaf) 한글 깨질 경우, script(X))
@RequestMapping(value="/checkout/member_modifyok", method=RequestMethod.POST, produces="text/html; charset=utf-8")
public String member_modifyok(@ModelAttribute jpa_dao jds, ServletResponse res) {
res.setContentType("text/html; charset=utf-8");
try {
//findById : primary key(@Id를 의미) => select * from member_ship where uidx=?;
//orElse : select 시 값이 없을 경우 null로 반환하는 return 메소드(findById에서만 사용 가능)
/*
//dto를 이용하여 업데이트 하는 방식
jpa_dao jd=web_repo.findById(jds.getUidx()).orElse(null);
jd.setUtel(jds.getUtel());
jd.setUemail(jds.getUemail());
jd.setUpost(jds.getUpost());
jd.setUaddr1(jds.getUaddr1());
jd.setUaddr2(jds.getUaddr2());
if(!jds.getUpass().equals(null)) { //신규 패스워드 값이 있을 경우
jd.setUpass(jds.getUpass());
}
web_repo.save(jd);
//save : insert, update(select 후 변경된 값이 있을 경우)
*/
//배열로 업데이트하는 방식
List<jpa_dao> list=wr.findByUidx(jds.getUidx());
list.get(0).setUtel(jds.getUtel());
list.get(0).setUemail(jds.getUemail());
//나머지애들도 다해줘야함
jpa_dao result=wr.save(list.get(0)); //update가 발생
System.out.println(result + "입니당 ");
wr.flush(); //database 지연시 메모리에 쌓여있는 값을 소모시킴
this.pw=res.getWriter();
this.pw.print("<script>"
+ "alert('수정이 완료되었습니다.');"
+ "location.href='./member_list';"
+ "</script>");
} catch (IOException e) {
this.pw.print("<script>"
+ "alert('오류가 발생하였습니다.');"
+ "</script>");
} finally {
this.pw.close();
}
return null;
}
'CLASS > SPRINGBOOT' 카테고리의 다른 글
#9-1 / JPA 5 - 회원가입 list paging (0) | 2024.08.27 |
---|---|
#8-4 / JPA 4 - 회원가입 search (0) | 2024.08.27 |
#8-1 / JPA 3 - 회원가입 list , delete ( onclick() + thymeleaf ) (0) | 2024.08.23 |
#7-2 / JPA 2 - 회원가입 중복체크 , insert (0) | 2024.08.22 |
#7-1 / JPA 1 - 회원가입 (0) | 2024.08.21 |