인터페이스 7일차 (Update)

2023. 1. 11. 09:54코딩배움일지/인터페이스 구현

Update

 

update.

UserControllelr에 patchmapping 추가

@PatchMapping("") // 패치가 성공하면은 유저정보를 다시 겟 한다. //
	public ResponseDto<GetUserResponseDto> patchUser(@RequestBody PatchUserDto requestBody){
		return userService.patchUser(requestBody);
	}

GetUserResponseDto 형식을 가져 와야 한다.

package com.jingu.board.dto.auth;

import com.jingu.board.entity.MemberEntity;

import lombok.AllArgsConstructor;
//import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
//@Builder
public class GetUserResponseDto { //생성자 get set constructor 만드는 대신 annotation
	private String email;
	private String nickName;
	private String profile;
	private String telNumber;
	private String address;
	
	public GetUserResponseDto(MemberEntity member) { // 생성자 필요한 형태로 가져다 쓴다.
		this.email = member.getEmail();
		this.nickName = member.getNickname();
		this.profile = member.getProfile();
		this.telNumber = member.getTelNumber();
		this.address = member.getAddress();
	}
}

 

PatchUserDto 생성

package com.jingu.board.dto.user;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PatchUserDto {
	private String email;
	private String nickname;
	private String profile;
	
}

 

 

UserService 안에  patchUser

public ResponseDto<GetUserResponseDto> patchUser(PatchUserDto dto) {
		// dto에서 이메일을 가져옴
		String email = dto.getEmail();

		// repository를 이용해서 데이터베이스에 있는 member 테이블 중
		// 지정한 email에 해당하는 데이터를 불러옴
		MemberEntity member = null;
		try {
			member = memberRepository.findById(email).get();
		} catch (Exception e) {
			// 만약 존재하지 않으면 FailResponse 로 "Not Exist User" 반환
			return ResponseDto.setFailed("Not Exist User");
		}

		// Requset Body 로 받은 nickname 과 profile 로 각각 변경
		member.setNickname(dto.getNickname());
		member.setProfile(dto.getProfile());

		// 변경한 entity를 repository를 이용해서 데이터베이스에 적용(저장)
		memberRepository.save(member);
		
		// 결과를 ResponseDto에 담아서 변환
		return ResponseDto.setSuccess("User Patch Success", new GetUserResponseDto(member));
	}

 

 

바꾸기전
이메일을 찾아서 nickname과 profile을 수정한다.
nickname과 profie이 수정되었다.