[InteliJ + Spring Boot + Gradle] Rest API Server 구축하기(4) - mapper를 활용한 DB 연동

2022. 1. 30. 00:35Backend Develop/REST API

반응형

개발환경

IDE : InteliJ
Spring Boot : 2.6.2
JDK : 17

 

1. MariaDB 생성

윈도우에 mariadb를 설치 한뒤 다음과 같은 테이블을 생성 해준다.

데이터는 임시로 아래와 같이 넣어준다.

2. MyBatis 라이브러리 의존성 추가

build.gradle 파일에 의존성을 추가해준다

dependencies {
   ~
   // MyBatis 라이브러리 의존성 추가
   implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
   runtimeOnly 'mysql:mysql-connector-java:8.0.25'
}

 

3. DB 연동

application.yaml 파일에 아래와 같이 추가해준다.

server:
  port: 8888

---

spring:
  application:
    name: rest-api
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/apisrv?&serverTimezone=UTC&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8
    username: developer
    password: zaq1@WSX!
mybatis:
  mapper-locations: classpath:mapper/**.xml


---

spring:
  application:
    name: rest-api
  profiles:
    active: prod
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/apisrv?&serverTimezone=UTC&autoReconnect=true&allowMultiQueries=true&characterEncoding=UTF-8
    username: developer
    password: zaq1@WSX!
mybatis:
  mapper-locations: classpath:mapper/**.xml

username은 DB 계정이름, password는 패스워드를 입력 해준다.

4. mapper 추가

mapper 폴더를 만들어 UserMapper를 아래와같이 추가한다.

package com.kwaneung.apiserv.user.mapper;

import com.kwaneung.apiserv.user.dto.UserDto;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    List<UserDto> selectUserList();
}

resources 에 mapper폴더를 만들어 아래와같이 UserMapper.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.kwaneung.apiserv.user.mapper.UserMapper">
    <select id="selectUserList" resultType="com.kwaneung.apiserv.user.dto.UserDto">
        SELECT * FROM apisrv.tb_user
    </select>
</mapper>

 

DB연동을 한 테이블의 전체 유저를 가져오는 쿼리를 실행하여 UserDto 타입으로 반환한다.

5. Service 수정

public final UserMapper userMapper;

public UserService(UserMapper userMapper) {
    this.userMapper = userMapper;
}

public List<UserDto> getUserList() {
    return userMapper.selectUserList();
}

UserMapper를 선언하고 이용해 아까 만든 쿼리를 실행해 반환하는 로직을 추가한다.

 

6. Controller 수정

Controller에서 서비스를 호출 해준다.

 

7. 확인

/user/test로 GET Method로 요청을 날리면 DB에 넣어둔 내용이 정상적으로 조회되는것을 볼 수 있다.

반응형