웹 개발/웹 개발

Mybatis - Mapper 인터페이스

크리스피코드 2023. 2. 6. 09:59

0. Mapper 인터페이스

지금까지는 DAO 클래스를 구현해서 SqlSessionTemplate에 문자열을 지정해 mapper.xml 파일과 연결하는 방식으로 Mybatis를 사용했다. 이 방식은 값을 문자열로 넘겨주기 때문에 오타가 발생할 가능성이 높다.

 

오타로 인한 오류 발생을 줄이고 DAO를 좀 더 간소화할 수 있는 방식이 바로 Mapper 인터페이스 방식이다.

 

 

1. web.xml 설정

Mapper 인터페이스 방식을 사용하기 위해서는 web.xml에 다음과 같이 bean 설정을 추가해야한다.

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="kr.or.test.mapper" />
</bean>

 

 

2. 인터페이스 작성

DAO의 역할을 대신해 Mybatis와 서비스를 연결할 인터페이스를 생성한다.

package kr.or.test.mapper;

public interface TestMapper {
    
    public String getTestCode();
    
    ...
}

 

 

3. xml 파일 작성

SQL을 작성할 xml 파일을 작성한다.

 

이때 mapper의 namespace는 사용할 Mapper 인터페이스의 전체 경로(예 : kr.or.test.TestMapper)로 작성해야하고 또한 SQL의 id는 인터페이스의 메서드명과 일치해야한다.

<?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="kr.or.test.mapper.TestMapper">

    <select id=" getTestCode" resultType="String">
        SELECT TEST_ID FROM TEST
    </select>

</mapper>

 

 

4. service 파일 작성

서비스는 기존과 거의 비슷하다. DAO 대신 Mapper 인터페이스를 사용한다는 점만 다르다.

package kr.or.ddit.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import kr.or.ddit.mapper.CusMapper;
import kr.or.ddit.service.CusService;

@Service("testService")
public class testServiceImpl implements testService {
	
//	@Autowired
//	private TestDao testDao;
	
	@Autowired
	private TestMapper testMapper;
	
	@Override
	public String getTestCode() {
		return testMapper.getTestCode();
	}

}