이번엔 사용자가 회원정보를 수정하는 코드를 설명하고자 한다.
회원수정에는 공백이거나, 정규식에 맞지 않으면 데이터가 변경되지않는 코드를 서버로직인
DAO에 작성하지 않고 JavaScript로 폼이 제출되지 않도록 구현하였다.
// User 회원수정
@Update("update user set user_pwd=#{user_pwd}, user_name=#{user_name}, user_tel=#{user_tel}, user_email=#{user_email}, user_addr=#{user_addr}, user_jumin=#{user_jumin} where user_id=#{user_id}")
int userUpdate(UserDto userDto);
사용자가 회원정보를 업데이트 하는 쿼리문이다.
user_id가 주어진 값과 일치하는 행을 찾아 업데이트를 수행한다 (조건절 where을 적지 않으면user 테이블에 있는 모든 값이 변경된다!)
사용자 정보 업데이트 작업의 성공 또는 실패 여부를 나타내기 위해 메서드의 반환 타입이 int로 설정
UserDto 객체는 업데이트할 사용자의 정보를 담고 있기 때문에 파라미터로 사용한다.
// 사용자 회원수정에 필요한 메서드
public boolean userDataUpdate(UserDto userDto) {
boolean b = false;
int re = dataMapperInter.userUpdate(userDto);
if(re > 0) b = true;
return b;
}
가독성을 위해 초기에 b를 false로 설정하고 데이터베이스에서의 삭제 연산을 수행하고 영향을 받은 행의 수를 re 변수에 저장한다.
re 변수에 저장된 영향을 받은 행의 수를 확인하고 re 값이 0보다 크면, 데이터베이스에서 한 개 이상의 행이 삭제되었다는 의미이므로 true를 반환한다.
반대로, re 값이 0 이하인 경우, 삭제된 행이 없거나 삭제 작업이 실패했다는 의미이므로 false를 반환한다.
@PostMapping("/userInfoUpdate")
public String userInfoupdate(UserDto userDto) {
boolean b = userDao.userDataUpdate(userDto);
if(b) {
return "user/userlogin";
} else {
return "user/usermypage";
}
}
사용자 정보 업데이트 요청을 처리하고 업데이트 작업의 성공 또는 실패에 따라 적절한 페이지 이동한다.
데이터베이스와 상호작용은 userDao 객체를 통해 이루어지며, DAO에서 반환한 boolean 값으로 성공 또는 실패를 판단한다.
이번엔 사용자가 회원탈퇴를 하는 기능 구현이다.
@Delete("delete from user WHERE user_id = #{user_id}")
int userDelete(UserDto userDto);
MyBatis를 사용하여 데이터베이스에서 특정 사용자의 정보를 삭제하는 메서드이다, 이 메서드는 삭제 작업의 성공 또는 실패를 나타내는 int 값을 반환하며, 데이터베이스에서 레코드를 성공적으로 삭제했는지 확인할 수 있다.
마찬가지로 where 조건절을 적어주지 않으면 해당 user테이블에 있는 회원정보들이 다같이 삭제된다.
// 회원삭제
public boolean userDataDelete(UserDto userDto) {
boolean b = false;
int re = dataMapperInter.userDelete(userDto);
if (re > 0) {
b = true;
}
return b;
}
데이터베이스에서의 삭제 연산을 수행하고 영향을 받은 행의 수를 re 변수에 저장한다.
re 변수에 저장된 영향을 받은 행의 수를 확인하고 re 값이 0보다 크면, 데이터베이스에서 한 개 이상의 행이 삭제되었다는 의미이므로 true를 반환
반대로, re 값이 0 이하인 경우, 삭제된 행이 없거나 삭제 작업이 실패했다는 의미이므로 false를 반환
@PostMapping("/userInfoDelete")
public String userInfoDelete(UserDto userDto, Model model, HttpSession session) {
boolean b = userDao.userDataDelete(userDto);
if(b) {
session.removeAttribute("userSession");
return "user/userlogin";
} else {
return "user/userdelete";
}
}
여기서도 b는 userDao에서 선언된 userDataDelete 메서드의 반환값을 담고 있다.
반환값이 true 일때 회원탈퇴(정보삭제)가 정상적으로 진행되고 세션 유지가 되는 것을 방지하기 위해 session.removeAttribute
을 작성하였다.