공유기 설정
외부에서 요청 을 하면 외부 ip에서 데이터 베이스를 불러올 수 있다.
포트번호도 수정이 가능하다.
spring io 에서 똑같이 create 를 해준다.

package 를 이런 식으로 만들어 준다.
●application.properties
#db 연결구문을 넣어주면 자동으로 연결시켜준다.
# Spring DataSource (MySQL)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mh?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1234
# Spring JPA select insert delete update 를 자동으로 만들어준다
spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
# table 만들고 데이터 실행해라
spring.jpa.defer-datasource-initialization=true
# User 클래스... -> create table 시작 table 종료 하면 자동으로 사라진다.
spring.jpa.hibernate.ddl-auto=create-drop
# ddl create table 데이터 디파인 렝기지
# dml select insert delete update
spring.jpa.generate-ddl=true
# 생성되는 sql 구문 보여주겠다
spring.jpa.show-sql=true
# 예쁘게 보여주겠다.
spring.jpa.properties.hibernate.format_sql=true
# sql 구문을 날려줘서 데이터로 들어가게 해준다.
spring.sql.init.mode=always
●Main
package com.mh.restapi03;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Restapi03Application {
public static void main(String[] args) {
SpringApplication.run(Restapi03Application.class, args);
}
}
●UserRepository
package com.mh.restapi03.users;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User,Long>{
//findall save deleteBYID
}
interface로 JpaRepository를 상속한다. User에 id 타입은 Long 타입이다.
●Gender
package com.mh.restapi03.users;
public enum Gender {
Male,FeMale
}
enum으로 Male,FeMale만 들어올 수 있게 만든다.
●User
package com.mh.restapi03.users;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.persistence.*;
import lombok.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Entity
@ToString
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "users") // table 이름을 바꾸는 어노테이션
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE) // 자동증가키
private Long id;
@Column(length = 50)
private String username;
@Column(length = 50, unique = true ) // 중복나게 되면 insert 실패
private String email;
private String password;
// male ,female 값을 넣을 수 있다.
@Enumerated(EnumType.STRING)
// @Enumerated(EnumType.ORDINAL) -> male = 1 번 , female 은 2번 순서 가 들어가게 된다.
private Gender gender;
@JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss")
private LocalDateTime wdate;
}
@Table 로 테이블 이름을 바꿀수 있다.
@Colum으로 타입의 길이를 수정할 수 있다, email에 unique =true를 써서 중복 허용이 안되게 만들었다.
@Enumerated(EnumType.STRING) 으로 enum 값을 문자열로 받든다.
@Enumerated(EnumType.ORDINAL)은 enum 값을 순서(1,2)로 받는다.
LocalDateTime은 년 월 일 시간 분 초 뒤에 붙는 초가 있기 때문에 @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss")
이렇게 적어서 년/월/일 시간:분:초 이렇게만 받게 만든다.
● UserService
package com.mh.restapi03.users;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public List<User> slelect(User user){
List<User> list = userRepository.findAll();
return list;
}
public User regist(User user){
//insert 구문 실행
userRepository.save(user);
return user;
}
}
insert 구문이랑 select 구문을 실행하게 한다.
select 는 list를 사용해 배열로 보여주게 한다.
●MainController
package com.mh.restapi03.users;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@RestController
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
@GetMapping("users")
public List<User> selUser(User user){
List<User> list = userService.slelect(user);
return list;
}
@PostMapping("users")
public User addUser(@RequestBody User reqUser){
User user = User.builder()
.username(reqUser.getUsername())
.password(reqUser.getPassword())
.email(reqUser.getEmail())
.gender(reqUser.getGender())
.wdate(LocalDateTime.now())
.build();
User dbuser = userService.regist(user);
return dbuser;
}
}
@RequestBody 는 사용자의 요청 처리를 하는 어노테이션 이다.
웹에서 요청한 값을 데이터에 넣는일을 하는데 사용한다.
@GetMapping 과 @PostMapping 을 써서
select 와 insert를 한다.
'spring boot' 카테고리의 다른 글
Spring boot 다른 포트 설정 (0) | 2024.03.11 |
---|---|
Spring boot 유효성 검사 / 복사 (0) | 2024.03.07 |
spring boot JPA (1) | 2024.03.05 |
spring boot 복습 (0) | 2024.03.04 |
spring boot 입출력 2 (0) | 2024.02.27 |