카테고리 없음

[블로그프로젝트] 9-1. 회원가입기능 구현하기(2)

dantriss 2023. 2. 18. 03:45

유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩

 


 

이전 글에 이어서 이제는 회원가입할때 작성한 데이터를 DB에 넣어보자.

 

controller하위폴더로 api를 생성하고 UserApiController.java 생성한다

 

main/java/com/blog하위폴더로 service 폴더를 생성하고 UserService.java를 생성한다.

 

 

@Service 어노테이션을 작성 후 아래와 같이 작성한다. 

정상적인 데이터가 들어온다면 save가 동작이 될 것이고, 그렇지 않으면 Exception 처리가 될 것이다.

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    @Transactional
    public int 회원가입(User user){
        try {
            userRepository.save(user);
            return 1;
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("UserService : 회원가입() : "+ e.getMessage());
        }
        return -1;
    }

}

 

다시 UserApiController.java로 돌아와 다음과 같이 작성한다. user_id, password, email 전부 다 작성한대로 들어가고 user_idx와 createDate은 자동으로 데이터가 들어갈텐데 role은 null 값으로 들어갈것이다.

그래서 setRole해서 RoleType에 있는 user 또는 admin 중에서 user로 선택한다.

@RestController
public class UserApiController {

    @Autowired
    private UserService userService;


    @PostMapping("/api/user")
    public ResponseDTO<Integer> save(@RequestBody User user){
            System.out.println("test : save response");
            user.setRole(RoleType.USER);
            userService.회원가입(user);
        return new ResponseDTO<Integer>(HttpStatus.OK,1);
    }

}

 

src/main/java/com/blog/table/RoleType.java

package com.blog.table;

public enum RoleType {
    USER,ADMIN

}

 

이제 브라우저로 돌아가서 다시 값을 입력해보자.

해당 얼러트가 오면서 인텔리제이를 확인해보면

 

다음과 같이 에러가 날 수도 있다.

나같은 경우에도 확인해보니 DB연결이 끊겨져 있었고 재연결해도 해당 에러가 수정되지 않았다.

 

그때는 application.yml로 가서 테이블을 전체 다시 생성해보자.

update를 create로 바꿔서 재실행 해보면

 

콘솔창에 테이블들이 드롭되면서 다시 생성이 된다. 

그러면 application.yml에 create 를 다시 update로 바꾸고 재실행 해보자.

 

그 후 브라우저로 다시 돌아가 회원가입할 데이터를 입력해보자. 

그러면 회원가입완료라는 얼러트가 나오면서 인텔리제이 콘솔을 확인해보면 insert 문이 작동되는걸 볼 수 있다.

 

그리고 DB를 확인해보면 입력한 값이 들어간걸 볼 수 있다.

 

 

 

참고한 블로그 : https://cocoon1787.tistory.com/823 (field '' doesn't have a default value 오류)