반응형

1. 시험환경

    ˙ Spring Initializr

    ˙ IntelliJ Community

    ˙ SpringBoot, Gradle, MyBatis, MySQL

 

2. 목적

    ˙ Spring Initializr를 이용하여 SpringBoot 프로젝트를 생성한다.

    ˙ MyBatis, MySQL 의존성 패키지를 추가하고 설정하는 방법을 알아보자.

    ˙ MyBatis를 이용하여 DB에 저장된 데이터를 Load하여 사용자에게 보여주는 코드를 작성하자.

 

3. 적용

    MySQL에서 샘플 데이터를 다음과 같이 생성한다.

        - DB 스키마 : crud-template

1
2
3
4
5
6
7
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/

 

     의존성 패키지를 추가하여 프로젝트를 생성한다.

template.zip
0.06MB

 

    IntelliJ에서 프로젝트 폴더를 임포트(import) 하면 프로젝트 빌드(build)가 자동으로 진행된다.

 

     MySQL 및 MyBatis를 설정한다.

        - 경로 : resources/application.properties

1
2
3
4
5
6
7
8
9
10
# 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

1
2
3
4
5
6
7
8
9
10
11
<?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에 저장된 데이터를 가져 오는지 확인한다.

 

반응형

+ Recent posts