본문 바로가기
spring boot

Spring boot JPA(2), 포트 설정

by improve 2024. 3. 6.

공유기 설정
외부에서 요청 을 하면 외부 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