Table of Contents
MySQL 을 이용한 데이타 엑세스
목표
MySQL 데이타베이스를 이용해, 데이타를 insert/update/select 를 수행합니다.
프로젝트 생성
신규 프로젝트를 생성합니다.
의존성은 DevTools, Lombok, Spring Web, Thymeleaf, Spring Data JPA, MySQL 을 선택합니다.
파일 추가
Entity 생성
User.java 를 생성합니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
private String name;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Repository 생성
UserRepository.java 를 생성합니다.
public interface UserRepository extends CrudRepository<User, Integer> {
}
Controller 생성
MainController.java 를 생성합니다.
@Controller // 컨트롤러임을 명시합니다.
@RequestMapping(path="/demo") // URL 중 /demo 로 시작하는 URL 을 매핑합니다.
public class MainController {
@Autowired // 아래 클래스가 스프링에 의해 자동생성됨을 표시합니다.
private UserRepository userRepository;
@PostMapping(path="/add") // POST 요청에만 대응합니다.
public @ResponseBody
String addNewUser (@RequestParam String name
, @RequestParam String email) {
// @ResponseBody 는 리턴값이 브라우저에 전송되는 데이타임을 의미합니다.
// (템플릿 파일을 찾지 않고 그대로 리턴값을 브라우저에 전송합니다.)
// @RequestParam 를 지정해서 URL 파라미터가 각각의 변수에 자동 할당됩니다.
User n = new User();
n.setName(name);
n.setEmail(email);
userRepository.save(n);
return "Saved";
}
@GetMapping(path="/all")
public @ResponseBody Iterable<User> getAllUsers() {
return userRepository.findAll();
}
}
MySQL 설정
create database db_example;
use db_example;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`email` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
`name` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_general_ci'
)
COLLATE='utf8_general_ci'
ENGINE=INNODB;
application.properties 설정
# spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=ThePassword
spring.datasource.driver-class-name =com.mysql.jdbc.Driver
#spring.jpa.show-sql: true
프로젝트 실행
프로젝트를 실행 후 아래 명령을 입력해서 데이타를 입력합니다.
curl localhost:8080/demo/add -d name=First -d email=someemail@someemailprovider.com
아래 링크를 열어 데이타가 입력되었는지 확인합니다.
Pingback: Spring Boot 시작하기 – 상구리의 기술 블로그