진이의 Developer Story

(3) Spring+MyBatis 게시판 만들기 - MyBatis 셋팅 본문

Java/Spring

(3) Spring+MyBatis 게시판 만들기 - MyBatis 셋팅

JIN3260 2016. 1. 20. 13:56

지난 DB셋팅 포스트에 이어 MyBatis 셋팅입니다.

(1) mapper-context.xml

<!--?xml version="1.0" encoding="UTF-8"?-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- mybatis sql session template -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="mapperLocations" value="/WEB-INF/sqlmap/mappers/*Mapper.xml"/>
		<property name="configLocation" value="/WEB-INF/sqlmap/mybatis-config.xml"/>
	</bean>

	<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="sqlSessionFactory"/>
	</bean>

	<!-- mybatis mapper auto scanning -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.sample.board.service"/>
	</bean>
</beans>

/WEB-INF/spring 디렉토리에 mapper-context.xml 파일을 생성합니다.
/WEB-INF/ 디렉토리에 sqlmap 디렉토리를 생성해주시고, sqlmap 디렉토리에 mappers 디렉토리를 생성해주세요!

여기서 잠깐! mapper-context의 내용을 읽을 수 있는 이유는?
지난 포스트에서 web.xml에서 컨텍스트 파라미터를 수정해줌으로써 mapper-context.xml을 읽을 수 있게 되었습니다.

MyBatis를 사용하기 위해서 필요한 빈은 2가지입니다.
바로 SqlSessionFactoryBean과 SqlSessionTemplate인데 위와 같이 적어줍니다.
지금은 설정방법만 알아보겠으며, MyBatis의 원리가 궁금하신 분은 구글링을... ^^

SqlSessionFactoryBean에 dataSource 프로퍼티가 있는데 ref값에 dataSource를 적습니다.
ref에 들어가는 값은 bean이 들어갈 수 있습니다.
위에서 적은 dataSource는 지난 시간 MySQL DataSource 빈을 설정하였죠?
그 빈의 값이 SqlSessionFactoryBean의 dataSource 프로퍼티로 들어가는겁니다.
configLocation은 MyBatis 설정파일의 경로입니다.
mapperLocation은 매핑파일들의 경로입니다.

아까 생성한 sqlmap 디렉토리에 mybatis-config.xml 파일을 생성해주세요.

<!--?xml version="1.0" encoding="UTF-8"?-->
<configuration>
    <settings>
        <setting name="cacheEnabled" value="false"/>
        <setting name="useGeneratedKeys" value="true"/>
        <setting name="defaultExecutorType" value="REUSE"/>
    </settings>
    <typealiases>
		<typealias alias="board" type="com.sample.board.vo.BoardVO"/>
    </typealiases>
</configuration>

위의 내용을 COPY&PASTE 해주시고... ^^
MyBatis 자세한 설정은 MyBatis 셋팅에서 참고해주세요.

여기서는 typeAlias 만 짚고 넘어가겠습니다.
곧 VO를 작성하게 되는데요, MyBatis에서 파라미터 및 리턴타입으로 사용될 클래스 이름을 풀네임(패키지+Class이름)으로 적어주어야 하지만 별명으로 지정해줌으로써 짧게 사용할 수 있다는 점만 알아두시면 될 것 같습니다.

(2) BoardMapper.xml
다음으로 앞에서 생성한 mappers 디렉토리에 BoardMapper.xml 파일을 생성합니다.

<!--?xml version="1.0" encoding="UTF-8"?-->

<mapper namespace="com.sample.board.service.BoardMapper">

	<resultmap id="boardMap" type="com.sample.board.vo.BoardVO">
		<result property="idx" column="idx"/>
		<result property="title" column="title"/>
		<result property="content" column="content"/>
		<result property="id" column="id"/>
		<result property="hit" column="hit"/>
		<result property="date" column="date"/>
	</resultmap>

	<select id="getBoardList" resultmap="boardMap">
		SELECT
			idx, title, content, id, hit, date
		FROM BOARD
	</select>

</mapper>

자세한 사용방법은 MyBatis3 매퍼 설정 에서 확인해주세요.
해당 부분에서는 차후에 다시 설명하도록 하겠습니다.

다음 포스트에서는 클래스를 작성해보겠습니다.

Comments