Mapper namespace 와 ID를 연결할 Interface 를 두어서 interface를 호출하는 방법이다.
[Spring] Mybatis 에서 Mapper(매퍼) 연결하는 2가지 방법에 대한 선택 가이드.(링크)
마이바티스를 설정하는 것은 다음의 포스트를 참조
링크 : [Spring] Mybatis 설정하기 (기본설정)
바로 코딩을 보자.
이전에 Mybatis를 설정했던 파일(sqlSessionFactory 등을 설정했던 xml 파일)에서 다음의 것을 추가한다.
<!--
Mapper 스캔
basePackage 를 이용해서 인터페이스 파일이 저장될 매퍼를 지정한다.
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.kr.test.mapper" />
</bean>
아래의 것은 매퍼파일의 내용이다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.kr.mapper.Test">
<select id="getTest" parameterType="java.util.HashMap" resultType="java.util.HashMap">
/* query */
</select>
</mapper>
basePackage로 설정한 패키지 위치에 'interface'를 생성한다.(클래스가 아니다)
package com.kr.mapper.;
// 매퍼의 namespace와는 경로를 맞추어야 한다.
// com.kr.mapper의 패키지 안에 Test 라는 인터페이스를 생성한다.
// 매퍼 안에 select id의 값을 메소드로 만든다.
public interface Test {
// select id 가 'getTest' 인 매퍼를 이용하여 SQL 조회한다.
List getTest(Map paramMap) throws Exception;
}
Service 에서는 다음과 같이 사용하면 된다.
@Autowired
private Test test;
// getTest를 이용해 쿼리를 조회하는 샘플
public HashMap<String, Object> getTest(Map paramMap, ModelMap model) throws Exception {
HashMap<String, Object> resultMap = new HashMap<String, Object>();
List resultList = null;
// Test 라는 인터페이스를 통해 매퍼와 연결하여 조회
resultList = test.getTest(paramMap);
resultMap.put("resultList", resultList );
return resultMap;
}
이것의 장점은 sqlSession을 사용했을때의 메서드를 상황에 따라 직접 호출하면서 메서드 명을 알아야 하는데에 반해, 호출을 이용해 SQL을 실행시키기 때문에 sqlSession의 메서드를 몰라도 된다.
'공부 > 프로그래밍' 카테고리의 다른 글
angularjs로 modal (ui-bootstrap)을 띄우고 값 주고받기. (1) | 2017.05.04 |
---|---|
[Spring] 익셉션 처리(@ControllerAdvice 사용) (0) | 2017.05.01 |
[Spring] Mybatis 사용하기 (mapper의 id를 직접 호출) (0) | 2017.04.20 |
[Spring] Mybatis 설정하기 (기본설정) (0) | 2017.04.20 |
[Spring] Mybatis 에서 Insert 시 자동 생성키 이용하기 (0) | 2017.04.20 |
댓글