본문 바로가기

개발(합니다)/Java&Spring

[Spring] UserMapper 사용방법

반응형

DAO를 작성하면서 똑같은 반복작업을 없애는 방법을 찾아보았고 그 중 UserMapper를 사용하는 방법입니다.

JPA를 사용하면 더 편리하겠지만 Mybais를 사용한다면 상황에 따라 팀원들과 협의하에 사용하면 편리합니다.



1. Servlet-context.xml

userMapper 
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xxx.erpxxx/>
        <property name="annotationClass" value="com.xxx.xxx.common.UserMapper" />
    </bean>
public @Interface UserMapper를 선언
Bean이 xxxmapper 함수와 쿼리 xxx.xml의 namespace와 자동으로 연결하는 어노테이션 설정



2. UserMapper 추가

common을 생성하고 interface UserMapper를 생성합니다.

설정해서 작성한 mapper를 파싱해서 자동으로 sql namespace와 연결합니다.

단, 함수명이 네임스페이스와 같아야 합니다.


3. 사용법

@UserMapper
public interface KoreaMapper {

    public List<SidoVO> selectSidoList(SidoVO sido) throws Exception;
    public List<SigunguVO> selectSigunguList(SigunguVO sido) throws Exception;
}

DAO 대신 mapper를 생성합니다.


@Service
public class KoreaServiceImpl implements KoreaService{
    @Inject
    private KoreaMapper mapper;
    
    @Override
    public List<SidoVO> selectSidoList(SidoVO sido) throws Exception {
        return mapper.selectSidoList(sido);
    }
}

DAO 대신 mapper를 주입합니다.


<mapper namespace="com.otrodevym.korea.KoreaMapper">
    <select id="selectSidoList" parameterType="com.otrodevym.korea.bean.SidoVO"
        resultType="com.otrodevym.korea.bean.SidoVO">
        select
            cd
            ,name
        from
            sido
        <if test="sido_cd != null">
        where
            bjcd = #{sido_cd}
        </if>
        group by
            cd
            , name
        order by
            name
    </select>

korea.xml의 namespace를 DAO대신 생성했던 KoreaMapper로 등록합니다.



DAO와 Service와 연결하는 과정이 줄어서 그나마 편합니다.


반응형