



간단한 테스트용으로 service내용을 controller에 위임함
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
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();
}
}