스프링

Spring Boot와 mybatis연동(mysql에 데이터 삽입 테스트)

코린F&F프티 2024. 1. 18. 16:24
gradle기반으로 스프링 부트로 프로젝트를 만든 이후의 mybatis를 연동 작업 이다.

 

1. 의존성 추가

- 프로젝트 폴더들을 자세히 보면 build.gradle이 있을텐데 들어가서 의존성을 추가한다.

- 아래의 코드를 복사하여 dependencies에 붙혀넣기

    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'

 

2. DB 및 MyBatis 설정

- application.properties 또는 application.yml에 들어가서 데이터 베이스 연결 정보 및 마이바티스 설정 파일 경로 지정

spring.datasource.url=jdbc:mysql://localhost:3306/{db이름}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
spring.datasource.username={db유저} or root
spring.datasource.password={db비밀번호}

mybatis.mapper-locations=classpath:/sql/*.xml

디렉토리구조


3. Mybatis Config 파일 생성

- resources폴더 밑에 sql이라는 폴더를 생성하고 원하는 이름의 xml파일을 생성한다

- 아래와 같이 mapper를 생성하고 namespace를 dao의 경로와 일치 시킨다

<?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.example.keyboard.repository.userDao">
   
</mapper>

 

- 필자는 유저의 정보를 데이터베이스에 기입하는 sql문을 작성하였다

- 아래와 같이 태그내부의 id값과 parameterType만 잘 맞춰주면 된다

- 이때 테이블의 db의 컬럼명과, 전달받은 객체의 파라미터의 변수명을 정확하게 맞춰주자

 

4. Entity 생성

- Lombok을 사용할 시에 getter, setter 기능이 제공되기에 따로 구현할 필요 없다

package com.example.keyboard.entity;

import lombok.Data;
@Data
public class userEntity {
    private String userId;
    private String userName;
    private String phoneNum;
    private String address;
    private String email;
    private String nickname;
    private String userType;
}

 

5. DAO 생성

- 여기서 DAO파일명과 mybatis config파일의 mapper namespace는 일치시킨다.

- 아래와 같이 매서드명을 mapper내부의 select id값과 일치시킨다.

package com.example.keyboard.repository;

import com.example.keyboard.entity.userEntity;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Mapper
@Repository
public interface userDao  {
     public void userInfoSave(userEntity vo) throws Exception;
}

 

 

6. service 작성

- final을 통해 userDao를 불러온 후 아래와 같이 아까작성한 메서드 불러온다

package com.example.keyboard.service;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import com.example.keyboard.entity.userEntity;
import com.example.keyboard.repository.userDao;

@RequiredArgsConstructor
@Service
public class userService {
    public final userDao userDao;
    
    public void save(userEntity vo) throws Exception {
        userDao.userInfoSave(vo);
    }
}

 

7. Controller 작성

- 아래와 같이 원하는데로 컨트롤러를 작성한다.

package com.example.keyboard.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;

import org.springframework.web.bind.annotation.PutMapping;

import com.example.keyboard.entity.userEntity;
import com.example.keyboard.service.userService;

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;


@Controller
@RequiredArgsConstructor
@RequestMapping("/user")
public class userController {

    private final userService userService;

    @PutMapping("/save")
    public ResponseEntity<Object> userSave(@ModelAttribute userEntity vo){
        try{
            userService.save(vo);
            return new ResponseEntity<>(HttpStatus.OK);
        }catch(Exception e){
            return new ResponseEntity<>("fail",HttpStatus.BAD_REQUEST);
        }
    }
}

 

8. postman 통신

- put으로 아까 컨트롤러에 객체를 넣어서 보낸다

 

9. 데이터베이스 확인

- 미리 만들어놨던 테이블에 아까 보낸 객체 데이터가 잘 들어간것을 확인 할 수 있다.