From 01ae8ca87273d2a092593071d85a52a6927fbbb4 Mon Sep 17 00:00:00 2001 From: SANGHEEJEONG <147232817+SANGHEEJEONG@users.noreply.github.com> Date: Mon, 28 Oct 2024 01:22:59 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EC=88=99=EC=A0=9C=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springhw31/controller/UserController.java | 15 +++++++++ .../com/example/springhw31/entity/User.java | 25 +++++++++++++-- .../springhw31/repository/UserRepository.java | 12 ++++++- .../springhw31/service/UserService.java | 32 +++++++++++++++++-- 4 files changed, 78 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/springhw31/controller/UserController.java b/src/main/java/com/example/springhw31/controller/UserController.java index 7eca68b..6ddd058 100644 --- a/src/main/java/com/example/springhw31/controller/UserController.java +++ b/src/main/java/com/example/springhw31/controller/UserController.java @@ -1,16 +1,31 @@ package com.example.springhw31.controller; import com.example.springhw31.dto.UserDto; +import com.example.springhw31.service.UserService; +import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * 회원가입 메서드처럼 UserDto를 파라미터로 받아주세요 */ +@RequestMapping("/user") +@RestController +@RequiredArgsConstructor public class UserController { + private final UserService userService; + @PostMapping("/join") public UserDto join(@ModelAttribute UserDto userDto) { + return userService.join(userDto); + } + @PostMapping("/login") + public String login(@ModelAttribute UserDto userDto) { + return userService.login(userDto); } } diff --git a/src/main/java/com/example/springhw31/entity/User.java b/src/main/java/com/example/springhw31/entity/User.java index 4e957cc..0bc06d6 100644 --- a/src/main/java/com/example/springhw31/entity/User.java +++ b/src/main/java/com/example/springhw31/entity/User.java @@ -1,14 +1,33 @@ package com.example.springhw31.entity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Getter; +import lombok.Setter; + /** * TODO: 완성된 코드 아닙니다~ */ +@Getter +@Setter +@Entity public class User { - private String username; + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column(unique = true, nullable = false) + private String username; + + @Column(nullable = false) + private String password; - private String password; + @Column(unique = true, nullable = false) + private String nickname; - private String nickname; } diff --git a/src/main/java/com/example/springhw31/repository/UserRepository.java b/src/main/java/com/example/springhw31/repository/UserRepository.java index 53778ec..294be28 100644 --- a/src/main/java/com/example/springhw31/repository/UserRepository.java +++ b/src/main/java/com/example/springhw31/repository/UserRepository.java @@ -1,5 +1,15 @@ package com.example.springhw31.repository; -public class UserRepository { +import com.example.springhw31.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import java.util.Optional; + + +@Repository +public interface UserRepository extends JpaRepository { + + // 예외 처리 안 해도 된다해서 Optional 안 씀 + Optional findByUsername(String username); } diff --git a/src/main/java/com/example/springhw31/service/UserService.java b/src/main/java/com/example/springhw31/service/UserService.java index c3e8928..d985367 100644 --- a/src/main/java/com/example/springhw31/service/UserService.java +++ b/src/main/java/com/example/springhw31/service/UserService.java @@ -1,14 +1,42 @@ package com.example.springhw31.service; import com.example.springhw31.dto.UserDto; +import com.example.springhw31.entity.User; +import com.example.springhw31.repository.UserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +import java.util.Optional; /** * Controller에 반환할 때도 DTO 객체를 반환합니다. */ +@Service +@Transactional +@RequiredArgsConstructor public class UserService { - public UserDto join(UserDto userDto) { + private final UserRepository userRepository; + + public UserDto join(UserDto userDto) { + User newUser = new User(); + newUser.setUsername(userDto.getUsername()); + newUser.setPassword(userDto.getPassword()); + newUser.setNickname(userDto.getNickname()); + + userRepository.save(newUser); + return userDto; + } + + public String login(UserDto userDto) { + Optional user = userRepository.findByUsername(userDto.getUsername()); + + if(user.isPresent() && user.get().getPassword().equals(userDto.getPassword())) + return userDto.getUsername() + "님, 환영합니다!!"; - } + return "아이디 및 비밀번호가 일치하지 않습니다."; + } } From 3d7582534ff7522cb6ecfbbea83248ec301a9f2a Mon Sep 17 00:00:00 2001 From: SANGHEEJEONG <147232817+SANGHEEJEONG@users.noreply.github.com> Date: Mon, 28 Oct 2024 02:09:59 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=EC=88=99=EC=A0=9C=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/springhw31/service/UserService.java | 4 ++-- src/main/resources/application.yml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/springhw31/service/UserService.java b/src/main/java/com/example/springhw31/service/UserService.java index d985367..f727dbd 100644 --- a/src/main/java/com/example/springhw31/service/UserService.java +++ b/src/main/java/com/example/springhw31/service/UserService.java @@ -31,9 +31,9 @@ public UserDto join(UserDto userDto) { } public String login(UserDto userDto) { - Optional user = userRepository.findByUsername(userDto.getUsername()); + User user = userRepository.findByUsername(userDto.getUsername()).orElseThrow(); - if(user.isPresent() && user.get().getPassword().equals(userDto.getPassword())) + if(user.getPassword().equals(userDto.getPassword())) return userDto.getUsername() + "님, 환영합니다!!"; return "아이디 및 비밀번호가 일치하지 않습니다."; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9b78d0c..0a2f388 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,8 +1,8 @@ spring: datasource: - url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 - username: your_username - password: your_password + url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 + username: root + password: ssang0402@ driver-class-name: com.mysql.cj.jdbc.Driver jpa: @@ -12,4 +12,4 @@ spring: properties: hibernate: format_sql: true - dialect: org.hibernate.dialect.MySQL8Dialect \ No newline at end of file + dialect: org.hibernate.dialect.MySQL8Dialect From be79b558ef02a122ac31ab1948efb64592709ef4 Mon Sep 17 00:00:00 2001 From: SANGHEEJEONG <147232817+SANGHEEJEONG@users.noreply.github.com> Date: Mon, 28 Oct 2024 03:10:44 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EC=88=99=EC=A0=9C=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/springhw31/repository/UserRepository.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/example/springhw31/repository/UserRepository.java b/src/main/java/com/example/springhw31/repository/UserRepository.java index 294be28..272bcde 100644 --- a/src/main/java/com/example/springhw31/repository/UserRepository.java +++ b/src/main/java/com/example/springhw31/repository/UserRepository.java @@ -10,6 +10,5 @@ @Repository public interface UserRepository extends JpaRepository { - // 예외 처리 안 해도 된다해서 Optional 안 씀 Optional findByUsername(String username); }