스프링부트 Mybatis boot-starter로 Mysql 연동하기

728x90

1. xml를 사용하지 않고 mybatis-spring-boot-starter를 사용하여 연동해보겠습니다.

https://github.com/mybatis/spring-boot-starter/wiki/Quick-Start

 

mybatis/spring-boot-starter

MyBatis integration with Spring Boot. Contribute to mybatis/spring-boot-starter development by creating an account on GitHub.

github.com

빠른 시작 방법을 알 수 있습니다.

 

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

runtimeOnly 'mysql:mysql-connector-java'

mybatis boot starter와 mysql connector 의존성을 추가합니다. gradle로 진행하겠습니다.

 

 

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/cokes1?serverTimeZone=Asia/Seoul&CharacterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root

application.properties 에 datasource 설정을 해줍니다. mysql Driver를 지정해주고, url과 username, password를 입력합니다.

 

import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

@Getter
@Setter
public class User {
    long id;
    String email;
    String password;
    String name;
    LocalDateTime det;

    public User(String email, String password, String name) {
        this.email = email;
        this.password = password;
        this.name = name;
    }
}

간단한 User 입니다. id와 det는 자동으로 추가가 되어, email password name만을 이용한 생성자를 만들었습니다.

 

 

UserMapper 인터페이스를 만듭니다.

 

@Mapper
public interface UserMapper {

    @Insert("INSERT INTO user (email, password, name) VALUES(#{email}, #{password}, #{name})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insert(User user);

    @Select("SELECT * FROM user")
    List<User> select();
}

insert와 List를 가져오는 select 두 기능이 있습니다.

@Mapper 어노테이션을 지정하여 이 인터페이스가 매퍼라는 것을 알려줍니다.

@Insert와 @Select 어노테이션을 사용해 sql문을 작성합니다. 값은 #{email} 을 사용하여 값을 치환합니다.

@Options를 사용해 옵션들을 지정할 수 있습니다.

 

private final UserMapper userMapper;

    @Autowired
    public UserRepositoryImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

이 매퍼를 사용할 곳에 선언을 하고 @Autowired로 자동 의존성 주입되도록 설정합니다.

 

  @Override
    public void insert(User user) {
        userMapper.insert(user);
    }

    @Override
    public List<User> userList() {
        List<User> list = userMapper.select();
        return list;
    }

이렇게 사용하면 됩니다.

반응형