모르는게 많은 개발자

[Spring] Boot와JPA(Mysql)을 이용한 Rest API 간단 예제 본문

스프링

[Spring] Boot와JPA(Mysql)을 이용한 Rest API 간단 예제

Awdsd 2020. 5. 7. 01:08
반응형

Spring Boot를 이용해 간단 Rest API를 만들어보자.


1. Spring Starter Project 설치


2. 아래와 같이 Spring Data JPA, MySQL Driver Check


3. application.properties

src/main/resources에 보면 application.properties파일이 있다.

application.properties = spring boot 설정 파일

application.properties에 JPA, Mysql을 설정해야한다.

아래와 같이 입력후 저장.

#spring boot 서버 주소와 포트 입력
server.address=localhost
server.port=1234

#콘솔에 SQL문을 출력해줄지 말지 결정
spring.jpa.show-sql=true

#DDL 데이터베이스 기능 사용
spring.jpa.generate-ddl=true

#Mysql 
spring.jpa.database=mysql

#DBNAME = db이름, username, password입력
spring.datasource.url=jdbc:mysql://localhost:3306/DBNAME?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=(username)
spring.datasource.password=(password)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

4. Entity 작성

데이터를 저장할 Entity클래스를 정의하자

※ 주의할점은 클래스 선언시 기본 생성자를 꼭 만들어야한다. 안그러면 오류가 난다.

class이름과 DB table이름을 맞춰야 한다. 만약 이름이 다르면 @Table(name="테이블 이름")어노테이션을 이용해 매핑해줘야한다.

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Entity
public class Board {
    @Id @GeneratedValue
    private Long id;
    private String age;
    private String name;
    public Board() {
    }
    public Board(String name, String age) {
        this.name = name;
        this.age = age;
    }
}

DB 테이블


5. Repository 작성

Repository는 Spring에서 CRUD를 처리하는 인터페이스다.

아래와 같이 interface를 정의하고 아무런 기능을 구현하지 않고 CrudRepository에 구현된 기능을 모두 이용한다.

import org.springframework.data.repository.CrudRepository;
public interface BoardRepository extends CrudRepository<Board, Long>{
	
}

6. Controller 작성

이제 API를 처리할 Controller를 작성하자

import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/board")
public class BoardController {
	private BoardRepository boardRep;
	
	@Autowired	
	public BoardController(BoardRepository boardRep) {
		this.boardRep = boardRep;
	}
	
    //POST로 유저 추가
	@PostMapping
	public Board put(@RequestParam String name, @RequestParam String age) {
		return boardRep.save(new Board(name, age));
	}
	
    //테이블 리스트 가져오기
	@GetMapping
	public Iterable<Board> list(){
		return boardRep.findAll();
	}
	
    //id로 테이블 값 가져오기
	@GetMapping(value = "/{id}")
	public Optional<Board> findOne(@PathVariable Long id) {
		return boardRep.findById(id);
	}
	
    //id로 테이블 값 수정
	@PutMapping(value = "/{id}")
	public Board update(@PathVariable Long id, @RequestParam String name, @RequestParam String age) {
		Optional<Board> board = boardRep.findById(id);
		board.get().setName(name);
		board.get().setAge(age);
		return boardRep.save(board.get());
	}
	
    //id로 테이블 값 삭제
	@DeleteMapping
	public void delete(@RequestParam Long id) {
		boardRep.deleteById(id);
	}
}

7. 실행

@SpringBootApplication
public class JpaApplication {

	public static void main(String[] args) {
		SpringApplication.run(JpaApplication.class, args);
	}

}

이제 어플리케이션을 실행하면 아래와 같은 콘솔창이 띄어진다.


8. Postman을 통한 결과 확인

 POST 결과
GET LIST, ID를 통한 유저
PUT UPDATE
DELETE

 

반응형
Comments