비즈니스 레이어와 DB를 연결하는 중간의 persistent layer의 역할으로 xml 이나 어노테이션을 통해 SQL을 통해 가져온 데이터를 자바 객체로 바꿔주는 역할을 한다. 뿐만 아니라 동적 쿼리를 쉽게 만들어주는 역할을 한다.
JDBC를 통해 데이터를 가져온다면 다음과 같은 작업을 해야한다.
반면에 Mybatis를 통해 데이터를 가져오면 파라미터 지정, 가져온 결과값을 어떻게 할건지만 지정해주면 되기 때문에 핵심 로직에 더 집중할 수 있다.
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
mybatis:
type-aliases-package: com.example.demo.Domain, com.example.demo.dto
mapper-locations: mybatis/mapper/**/*.xml
configuration:
jdbc-type-for-null: 'NULL'
Mybatis 매핑을 위한 매퍼 interface를 작성해준다.
@Mapper 어노테이션을 통해 해당 인터페이스의 함수가 어떤 mapper랑 연결되는 지 알 수있다.
아래와 같이 가져올 함수를 작성하고 parameter를 넣어주면 된다.
<insert id="registerUser" parameterType="map">
insert into user(userEmail, userPassword) values (#{userEmail}, #{userPassword})
</insert>
<insert id="registerUserFull" parameterType="User">
insert into user(userEmail, provider, refresh_token) values (#{userEmail}, #{provider}, #{refreshToken})
</insert>
<select id="findUserByEmail" resultType="User" parameterType="String">
select * from user where userEmail = #{userEmail}
</select>