스프링
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. 데이터베이스 확인
- 미리 만들어놨던 테이블에 아까 보낸 객체 데이터가 잘 들어간것을 확인 할 수 있다.