1. 시험환경
˙ Spring Initializr
˙ IntelliJ Community
˙ SpringBoot, Gradle, MyBatis, MySQL
2. 목적
˙ Spring Initializr를 이용하여 SpringBoot 프로젝트를 생성한다.
˙ MyBatis, MySQL 의존성 패키지를 추가하고 설정하는 방법을 알아보자.
˙ MyBatis를 이용하여 DB에 저장된 데이터를 Load하여 사용자에게 보여주는 코드를 작성하자.
3. 적용
① MySQL에서 샘플 데이터를 다음과 같이 생성한다.
- DB 스키마 : crud-template
|
CREATE TABLE `nations` (
`id` int unsigned NOT NULL,
`country` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`population` int DEFAULT NULL,
`language` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
|
cs |
② SpringBoot 프로젝트 생성을 위해 Spring Initializr 사이트에 접속한다.
- URL : https://start.spring.io/
③ 의존성 패키지를 추가하여 프로젝트를 생성한다.
④ IntelliJ에서 프로젝트 폴더를 임포트(import) 하면 프로젝트 빌드(build)가 자동으로 진행된다.
⑤ MySQL 및 MyBatis를 설정한다.
- 경로 : resources/application.properties
|
# MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/crud-template?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1q2w3e4r
# MyBatis
mybatis.type-aliases-package=com.template.crud.entity
mybatis.mapper-locations=classpath:/mybatis-mapper/**/*.xml
spring.datasource.sql-script-encoding=UTF-8
|
cs |
⑥ 패키지를 추가하여 각 레이어별 코드를 작성한다.
- resources/mybatis-mapper/NationsMapper.xml
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.template.repository.NationsMapper">
<select id="findAll" resultType="com.mybatis.template.entity.Nations">
SELECT * FROM nations
</select>
</mapper>
|
cs |
- com.mybatis.template.entity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package com.mybatis.template.entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Nations {
private Long id;
private String country;
private int population;
private String language;
}
|
cs |
- com.mybatis.template.repository
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package com.mybatis.template.repository;
import com.mybatis.template.entity.Nations;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper
public interface NationsMapper {
List<Nations> findAll();
}
|
cs |
- com.mybatis.template.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.mybatis.template.service;
import com.mybatis.template.entity.Nations;
import com.mybatis.template.repository.NationsMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class NationsService {
private final NationsMapper nationsMapper;
public List<Nations> getAllNations() {
return nationsMapper.findAll();
}
}
|
cs |
- com.mybatis.template.controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package com.mybatis.template.controller;
import com.mybatis.template.service.NationsService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
@RestController
public class NationsController {
private final NationsService nationsService;
@GetMapping("/nations")
@ResponseBody
public ResponseEntity getNations() {
return ResponseEntity.ok(nationsService.getAllNations());
}
}
|
cs |
4. 결과
˙ 프로젝트를 실행하고 접속하여 DB에 저장된 데이터를 가져 오는지 확인한다.