프로젝트 생성

프로젝트설정1.png

프로젝트설정2.png

DB 테이블 생성

db생성.png

파일구조

간단한 테스트용으로 service내용을 controller에 위임함

간단한 테스트용으로 service내용을 controller에 위임함

파일 내용

1) application.properties

server.address=localhost
server.port=8080
## 로컬의 mysql과 spring을 연결
spring.datasource.url : jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username : root
spring.datasource.password : ssafyA702
spring.datasource.driver-class-name : com.mysql.cj.jdbc.Driver

##jpa설정

spring.jpa.database=mysql
#해당 함수가 실행될때 쿼리문이 보이도록 설정
spring.jpa.show-sql=true
#ddl을 사용시 특성여부
#spring.jpa.hibernate.ddl-auto=validate

2) UserController

package com.example.jpatest.controller;

import com.example.jpatest.model.User;
import com.example.jpatest.respository.UserRepository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Optional;
// 페이지가 아닌 data를 리턴하는 restcontroller임을 표시
@RestController
@RequestMapping("/api")
// 모든 요소에 대해 생성자주입을 해주었다.
@RequiredArgsConstructor
public class UserController {

    private final UserRepository userRepository;

    @PostMapping("/user")
    public User create(@RequestBody User user){
        return userRepository.save(user);
    }

    @GetMapping("/user/{id}")
    public String read(@PathVariable Long id){
        Optional<User> userOptional = userRepository.findById(id);
        userOptional.ifPresent(System.out::println);
        System.out.println(userOptional+"aaff");

        // mapper를 사용해 json형태로 변경
        ObjectMapper mapper = new ObjectMapper();

        try {
						// NULL처리가 간단한 Optional을 사용해 try,catch없이 가능? 
            String jsonInString=mapper.writeValueAsString(userOptional.get());
            System.out.println(jsonInString);
            return jsonInString;
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
//        return "successfully executed";
//        return userOptional.get().toString();
    }
}