처음으로 userEntity를 생성해보았다. 아래와 같다
@Entity
@Table(name = "user")
@Data
@EqualsAndHashCode(callSuper = true) //부모클래스도 비교 가능하게 된다
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class UserEntity extends BaseEntity {
@Column(length = 50, nullable = false)
private String name;
@Column(length = 100, nullable = false)
private String email;
@Column(length = 100, nullable = false)
private String password;
@Column(columnDefinition = "varchar(50)", nullable = false) //예외 중요!!
@Enumerated(EnumType.STRING)
private UserStatus status;
@Column(length = 150, nullable = false)
private String address;
private LocalDateTime registeredAt;
private LocalDateTime unregisteredAt;
private LocalDateTime lastLoginAt;
}
다음으로 UserStatus를 정의하는 enum클래스를 만들었다.
@AllArgsConstructor
public enum UserStatus {
REGISTERED("Register"),
UNREGISTERED("UnRegister"),
;
private final String description;
}
UserRepository 는 다음과 같다
public interface UserRepository extends JpaRepository<UserEntity,Long> {
//select * from user where id = ? and status = ? order by id desc limit 1
Optional<UserEntity> findFirstByIdAndStatusOrderByIdDesc(Long userId, UserStatus status);
//select * from user where email = ? and password = ? and status =? order by id desc limit 1
Optional<UserEntity> findFirstByEmailAndPasswordAndStatusOrderByIdDesc(String email, String password , UserStatus status);
}
공통 어노테이션 만들기
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Service
public @interface Converter {
@AliasFor(annotation = Service.class)
String value() default "";
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Service
public @interface Business {
@AliasFor(annotation = Service.class)
String value() default "";
}
'JAVA > 배달웹 프로젝트' 카테고리의 다른 글
4. exception , exceptionhandler , interceptor , webConfig (0) | 2024.06.29 |
---|---|
2. db BaseEntity 생성 및 Config Json Swagger 등 (0) | 2024.06.28 |
1. 멀티모듈 및 grade 환경설정 (0) | 2024.06.28 |