공부/프로그래밍

[Spring] Mybatis 사용하기 (mapper의 id를 직접 호출)

demonic_ 2017. 4. 20. 14:32

Mapper namespace 와 ID를 직접 호출하여 조회하는 방법이다. 

이 방법은 sqlSession을 이용해서 직접 호출하는 방식이다.



[Spring] Mybatis 에서 Mapper(매퍼) 연결하는 2가지 방법에 대한 선택 가이드.(링크)


마이바티스를 설정하는 것은 다음의 포스트를 참조

링크 : [Spring] Mybatis 설정하기 (기본설정)



바로 코딩을 보자


// 스프링의 어노테이션을 이용해 SqlSession을 주입하여 사용.

@Autowired

private SqlSession sqlSession;



// getTest를 이용해 쿼리를 조회하는 샘플

public HashMap<String, Object> getTest(Map paramMap, ModelMap model) throws Exception {

HashMap<String, Object> resultMap = new HashMap<String, Object>();

List resultList = null;

// 매퍼를 namespace와 ID를 이용하여 직접 호출.

resultList = (Integer)sqlSession.selectOne("com.kr.mapper.Test.getTest", paramMap);


resultMap.put("resultList", resultList );


return resultMap;

}



아래는 매퍼 파일이다.

<?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>


매퍼 파일을 살펴보면 namespace가 'com.kr.mapper.Test' 이고 select 중 id가 'getTest'이다. 이 두개의 문자열을 더하면 'com.kr.mapper.Test.getTest' 가 되고, 위의 자바에서 

resultList = sqlSession.selectList("com.kr.mapper.Test.getTest", paramMap);

안에 "com.kr.mapper.Test.getTest" 과 동일하다.



주의할 점은 sqlSession.selectList 는 여러행일 경우. 단일행일 경우는 selectOne 등 상황에 맞게 써줘야 한다.