https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql |
logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.url=jdbc:mysql://$AZ_DATABASE_NAME.mysql.database.azure.com:3306/demo?serverTimezone=UTC spring.datasource.username=spring@$AZ_DATABASE_NAME spring.datasource.password=$AZ_MYSQL_PASSWORD spring.datasource.initialization-mode=always |
이는 테스트에 유용하지만, 다시 시작할 때마다 데이터가 삭제되므로 프로덕션에서 사용하면 안 됩니다! |
그렇지 않으면 Java 서버에서 데이터베이스와 동일한 날짜 형식을 사용하지 않으므로 오류가 발생합니다. |
DROP TABLE IF EXISTS todo; CREATE TABLE todo (id SERIAL PRIMARY KEY, description VARCHAR(255), details VARCHAR(4096), done BOOLEAN); |
package com.example.demo; import org.springframework.data.annotation.Id; public class Todo { public Todo() { } public Todo(String description, String details, boolean done) { this.description = description; this.details = details; this.done = done; } @Id private Long id; private String description; private String details; private boolean done; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getDetails() { return details; } public void setDetails(String details) { this.details = details; } public boolean isDone() { return done; } public void setDone(boolean done) { this.done = done; } } |
package com.example.demo; import org.springframework.data.repository.CrudRepository; public interface TodoRepository extends CrudRepository<Todo, Long> { } |
package com.example.demo; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/") public class TodoController { private final TodoRepository todoRepository; public TodoController(TodoRepository todoRepository) { this.todoRepository = todoRepository; } @PostMapping("/") @ResponseStatus(HttpStatus.CREATED) public Todo createTodo(@RequestBody Todo todo) { return todoRepository.save(todo); } @GetMapping("/") public Iterable<Todo> getTodos() { return todoRepository.findAll(); } } |
어플리케이션 테스트
todoapp$ curl --header "Content-Type: application/json" \ --request POST \ --data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \ http://127.0.0.1:8080 {"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true} todoapp$ curl http://127.0.0.1:8080 [{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}] |