728x90
반응형
SMALL
📌 inser Test 작성하기
1. DummyControllerTest 클래스 생성
2. 클래스 작성
package com.cos.blog.test;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //페이지로 응답할게 아니라 데이터 응답시
public class DummyControllerTest {
//http://localhost8081/blog/dummy/join(요청) --> request
//http의 body에 username, password, email데이터를 가지고 요청
@PostMapping("/dummy/join") // insert 문이니까 post방식
public String join(String username, String password, String email) { // key=value 약속된규칙
System.out.println("username :" + username);
System.out.println("password :" + password);
System.out.println("email :" + email);
return"회원가입이 완료되엇습니다.";
}
}
📌 DB insert 하기
1. com.cos.blog.repository 라는 패키지를 만든다.
2. UserRepository 인터페이스를 생성하고 jpa repository를 상속한다.
package com.cos.blog.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.cos.blog.model.User;
// DAO역할
// 자동으로 bean이 등록된다
// @Repository 생략이 가능하다
public interface UserRepository extends JpaRepository<User, Integer>{
//해당 jparepository는 user 테이블을 관리하는 레파지토리이고
// user테이블의 primary key는 integer이다
}
3. 다시 dummyrepositorytest로 가서 추가작성
@Autowired private UserRepository UserRepository; |
package com.cos.blog.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
@RestController //페이지로 응답할게 아니라 데이터 응답시
public class DummyControllerTest {
@Autowired // 의존성주입(=DI)
private UserRepository UserRepository;
//http://localhost8081/blog/dummy/join(요청) --> request
//http의 body에 username, password, email데이터를 가지고 요청
@PostMapping("/dummy/join") // insert 문이니까 post방식
public String join(User user) { // key=value 약속된규칙
System.out.println("username :" + user.getUsername());
System.out.println("password :" + user.getPassword());
System.out.println("email :" + user.getEmail());
UserRepository.save(user);
return"회원가입이 완료되엇습니다.";
}
}
4. postman에서 post방식으로 send하기
5. insert문이 삽입된 것을 확인할 수 있다.
근데, role값이 null로 나오는 것을 확인할 수 있다.
6. user.java 수정
//@ColumnDefault("'user'") -->이것을 주석처리한다.
private String role;
package com.cos.blog.model;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.CreationTimestamp;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder //빌더패턴
@Entity // 이 어노테이션을 사용하면
// user클래스가 MySQL에 테이블이 자동으로 생성됨
// @DynamicInsert --> insert시에 null인 필드를 제외시켜준다.
public class User {
@Id // primary key
@GeneratedValue(strategy =GenerationType.IDENTITY)
// 해당 프로젝트에서 연결된 db의 넘버링 전략을 따라간다.
// 즉, 내가 오라클을 사용한다면 시퀀스를 사용한다는 것이고
// mysql을 사용한다면 auto_increment를 사용한다는 뜻이다
private int id;//시퀀스. auto_increment
@Column(nullable = false, length = 30)// 아이디의 column의 값이 nul이 되면 안되기에 false로 설정하고 길이는 30으로 설정
private String username; //아이디
@Column(nullable = false, length = 100)// 비밀번호길이를 굳이 길게 설정하는 이유는 나중에 해쉬로 비밀번호를 암호화 할 것이기때문이다
private String password; //비밀번호
@Column(nullable = false, length = 50)
private String email; //이메일
//@ColumnDefault("'user'") -->이것을 주석처리하고
private String role; // Enum을 쓰는 것이 좋다. // admin, user, manager 도메인(=범위) 설정할 수 있다
@CreationTimestamp // 시간이 자동으로 입력된다.
private Timestamp createDate; // 가입시간
}
7. model 패키지에 enum 클래스 생성 --> 'RoleType'
package com.cos.blog.model;
public enum RoleType {
USER,ADMIN
}
8. user.java --> role을 String에서 RoleType형으로 바꾼다
//@ColumnDefault("'user'") -->이것을 주석처리하고
//DB에는 RoleType이라는 것이 없기에
@Enumerated(EnumType.STRING)
private RoleType role; // Enum을 쓰는 것이 좋다. // admin, user, manager 도메인(=범위) 설정할 수 있다
// ADMIN, USER
9. dummycontrollerTest 수정
package com.cos.blog.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import com.cos.blog.model.RoleType;
import com.cos.blog.model.User;
import com.cos.blog.repository.UserRepository;
@RestController //페이지로 응답할게 아니라 데이터 응답시
public class DummyControllerTest {
@Autowired // 의존성주입(=DI)
private UserRepository UserRepository;
//http://localhost8081/blog/dummy/join(요청) --> request
//http의 body에 username, password, email데이터를 가지고 요청
@PostMapping("/dummy/join") // insert 문이니까 post방식
public String join(User user) { // key=value 약속된규칙
System.out.println("id :" + user.getId());
System.out.println("username :" + user.getUsername());
System.out.println("password :" + user.getPassword());
System.out.println("email :" + user.getEmail());
System.out.println("role :" + user.getRole());
System.out.println("createDate :" + user.getCreateDate());
user.setRole(RoleType.USER);
UserRepository.save(user);
return"회원가입이 완료되엇습니다.";
}
}
10. postman에서 post방식으로 send하기
11. 이전과 달리 role에 null값이 아닌, 대문자로 USER가 들어간 것을 확인할 수 있다.
**즉, enum을 만들면 내가 넣는 값을 강제할 수 있다.
예로들면 USER와 ADMIN만 넣어야 하는데 혹시 실수하여 users라고 넣을 수 있는 경우
enum을 만들어 꼭 설정해야할 강제값을 넣으면 실수하지 않을 수 있다.
--> enum을 데이터의 '도메인'(=범위)을 만들때 사용하는 것이다.
728x90
반응형
LIST
'Spring > Spring 블로그만들기' 카테고리의 다른 글
[Springboot] 나만의 블로그 만들기 - 14. 전체 select 및 paging 테스트 (0) | 2022.03.21 |
---|---|
[Springboot] 나만의 블로그 만들기 - 13. id로 select 테스트 (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 11. 연관관계의 주인 (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 10. 테이블 생성(User, Board, Reply) (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 9. yml설정하기 (0) | 2022.03.21 |