Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,16 +1,28 @@
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
* 회원가입 메서드처럼 UserDto를 파라미터로 받아주세요
*/

@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);
}
}
17 changes: 14 additions & 3 deletions src/main/java/com/example/springhw31/entity/User.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
package com.example.springhw31.entity;


/**
* TODO: 완성된 코드 아닙니다~
*/
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(nullable = false)
private String username;

@Column(nullable = false)
private String password;

@Column(nullable = false)
private String nickname;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@column(nullable = false, unique = true)
이렇게 설정하면 null 값 들어오는거 막을 수 있고, 중복된 값 들어오는거 막을 수 있어

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 제약조건을 제대로 안봤군,,
수정했습니다!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굳굳!!!

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.example.springhw31.repository;

public class UserRepository {
import com.example.springhw31.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {

User findByUsername(String username);

}
29 changes: 26 additions & 3 deletions src/main/java/com/example/springhw31/service/UserService.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,37 @@
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;

/**
* Controller에 반환할 때도 DTO 객체를 반환합니다.
*/
@Service
@RequiredArgsConstructor
public class UserService {

private final UserRepository userRepository;

// 회원 가입
public UserDto join(UserDto userDto) {
Comment on lines +14 to 16
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

플젝에서는 @transactional 붙여주면 좋아용~

User user = new User();

user.setUsername(userDto.getUsername());
user.setPassword(userDto.getPassword());
user.setNickname(userDto.getNickname());
userRepository.save(user);

return userDto;
}

// 로그인
public String login(UserDto userDto) {
User user = userRepository.findByUsername(userDto.getUsername());
if (user != null) {
if (user.getPassword().equals(userDto.getPassword())) {
return user.getNickname() + "님, 환영합니다!!";
}
}
return "아이디 및 비밀번호가 일치하지 않습니다.";
Comment on lines +29 to +35
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

user가 null인 경우를 대비해서 if 조건문으로 로직 작성했는데
Optional로 받아서 처리하는 것도 괜찮습니다~

}
}
6 changes: 3 additions & 3 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -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/spring_study?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
username: root
password: kimna04!
driver-class-name: com.mysql.cj.jdbc.Driver

jpa:
Expand Down