
@Override
public Member login(Member input) throws Exception {
Member output = null;
try{
output = memberMapper.login(input);
if(output==null){
throw new Exception("아이디랑 비번은 기억해야지 서비스라는 것을 쓸 수 있다 맨이야");
}
}catch(Exception e){
log.error("Member 데이터 조회에 실패했습니다.", e);
throw e;
}
// 데이터 조회에 성공했다면 마지막 로그인 시각을 갱신.
try{
int rows = memberMapper.updateLoginDate(output);
if(rows == 0){
throw new Exception("존재하지 않는 회원에 대한 요청이지롱");
}
}catch(Exception e){
log.error("로그인 시각 갱신에 실패해버리고 말아부렸엉....", e);
throw e;
}
return output; // 이 값은, db에 로그인한 시간을 갱신하기 전에 가져온 값이 있기 때문에, 지금 바로 이전의 로그인한 시각 정보를 가지고 있게 된다.
}
서비스에서의 코드 진행을 보면,
일단 순차적으로 진행하면서 로그인 시간을 업데이트 하고
output 리턴을 하긴 했으나,
그 output에 업데이트된 로그인 시간을 집어넣지는 않았기 때문에,
결국 출력되는 로그인 시간은 업데이트가 되기 전의 로그인 시간이 된다.
'오답노트 및 하다 막힌 부분 > Spring' 카테고리의 다른 글
회원정보 수정 후 프사 안뜨던 이유 (1) | 2024.11.14 |
---|---|
char 타입의 변수를 String으로 바꾸었을 때. (1) | 2024.11.14 |
mapper에서 조건태그로 sql 구문 만들기 (0) | 2024.11.09 |
타임리프로 fragment 경로 잡아줄 때 { 뒤에 바로 슬래시 (0) | 2024.11.08 |
08-11 FileHelper에서 return null (0) | 2024.11.05 |