xml에 쿼리를 작성하지 않고도 어노테이션과 인터페이스만으로 쿼리를 실행하고 결과를 받을 수 있게 기능이
추가 되었는데요
대략적인 API의 사용 예를 보면 아래와 같습니다.
MyBatis에서 Mapper의 사용예제
SqlSessionFactory sqlSessionFactory = SqlSessionManager.getSqlSession(); | |
SqlSession session = sqlSessionFactory.openSession(); | |
UserMapper mapper = session.getMapper(UserMapper.class); | |
List<User> resultList = mapper.selectAll(); |
UserDataMapper.java
public interface UserMapper { | |
@Select("select userid from mining_user") | |
List<User> selectAll(); | |
} |
별도의 구현클래스를 만들지 않아도, SqlSession으로부터 Mapper를 얻어와서
바로 쿼리를 실행하고 그에 따른 결과를 받을 수 있게 되어있습니다. 물론 SqlSession에는 MyBatis에서 사용하기 위해서 기본적은 DB 관련 정보들을 properties로부터 읽어와서 사용하도록 되어있을 것 입니다. 어떻게 아무런 구현체도 없이 저렇게 사용이 가능 할 것일까요? 먼저 아래의 포스트를 읽어주세요.
http://pungjoo.tistory.com/17
GS에서 근무 할 때 저에게 많은 것을 가르쳐주셨던 풍주형님의 글입니다. 여전히 제목에는 작성중이라고 되어있지만 이 글은 저 상태만으로도 Proxy에 대해서 간단한 예제를 통해 많은 것을 보여주는 글입니다. 이 글을 보고 이해가 잘 되지 않는 예제를 몇 번씩 실행해보고 고쳐보면서 내용을 익혔었는데 MyBatis의 Mapper를 보고 MyBatis에서 Proxy를 사용하는 것이 아닐까? 라는 생각이 들었었습니다. Mapper에는 쿼리와 Return Type만이 선언 되어있습니다. 아무런 구현체가 없습니다. 그렇다면 이 Mapper의 역할을 다른 클래스가 대신 하도록 되어 있는 것이 아닐까 라는 생각과 풍주형님께서 작성하셨던 글의 예제를 좀 활용하면 비슷하게 구현을 해 볼 수 있게다 싶었던거죠.. ㅎㅎ 앞으로 2개의 포스트를 거쳐서 Proxy를 사용하여 MyBatis의 Mapper를 흉내내보려고 합니다. 본래 팀내 후배들에게 가르쳐주려고 만들었던 예제들인데요 그 예제들에 대해서 설명을 하는 형태로 글을 작성하려 합니다.