Bigfat

[Spring] MyBatis Mapper 파일 설정 방법 본문

Java/web

[Spring] MyBatis Mapper 파일 설정 방법

kyou 2017. 4. 28. 13:39

MyBatis Mapper XML 파일 설정 2가지 방법

1. MyBatis Config 파일에서 설정하는 방법

  기존 게시판 프로젝트에서 사용하는 방법으로, 마이바티스 설정 파일인 mybatisConfig.xml에 작성하는 방식이다. <mappers>의 하위 엘리먼트 <mapper>의 resource 속성으로 매퍼 파일의 경로를 지정해주며, 매퍼 파일이 늘어날 때마다 추가해줘야 한다. resource 속성은 서블릿 설정 파일인 servlet-context.xml에 /resource/로 설정되어 있으므로 아래와 같이 /resource/ 아래 경로부터 지정해주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
<configuration>
    <settings>
        <!-- http://www.mybatis.org/mybatis-3/ko/configuration.html -->
        <setting name="cacheEnabled" value="true"/>
        <setting name="lazyLoadingEnabled" value="false"/>
        <setting name="multipleResultSetsEnabled" value="true"/>
        <setting name="useColumnLabel" value="true"/>
        <setting name="useGeneratedKeys" value="false"/>
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <setting name="defaultStatementTimeout" value="25000"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="jdbcTypeForNull" value="VARCHAR"/>
        <!-- <setting name="callSettersOnNulls" value="true" /> -->
    </settings>
    
    <typeAliases>
        <typeAlias alias="article" type="com.edu.bbs.dto.BBSDto"/>
        <typeAlias alias="comment" type="com.edu.comment.dto.CommentDto"/>
    </typeAliases>
 
    <!-- MyBatis mapper 파일이 추가될 때마다 지정해줘야 . -->
    <mappers>
        <mapper resource="com/edu/mapper/bbs/bbs.xml"/>
        <mapper resource="com/edu/mapper/comment/comment.xml"/>
    </mappers>
    
</configuration>
cs


2. Root Application Context 파일에서 설정하는 방법

  루트 어플리케이션 컨텍스트 파일인 root-context.xml에서 SqlSessionFactory를 bean으로 등록할 때 property로 매퍼 파일들의 경로를 설정하는 방법이다. <property>의 name 속성으로 mapperLocations를, value로 매퍼 파일의 경로를 지정해준다. classpath: 접두사는 접두사 이후의 경로를 src와 resources 순으로 찾는다. 와일드카드 *를 사용해 여러 파일을 동시에 지정할 수 있기 때문에 매퍼 파일이 늘어나더라도 추가적으로 작성할 필요가 없다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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">
    
    <!-- Root Context: defines shared resources visible to all other web components -->
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:db.properties"></property>
    </bean>
    
    <bean id="dataSource"
            class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource">
        <property name="driverClassName" value="${driverClassName}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
    </bean>
    
    <bean id="sqlSessionFactory"
            class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:/mybatisConfig/mybatisConfig.xml"></property>
        
        <!-- 런타임 시 SqlSessionFactory에 MyBatis mapper 파일들의 경로가 설정된다. -->
        <property name="mapperLocations" value="classpath:/com/edu/mapper/**/*.xml" />
    </bean>
    
    <bean id="sqlSessionTemplate"
            class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg ref="sqlSessionFactory"></constructor-arg>
    </bean>
</beans>
cs


  반드시 두 방법 중 하나만 사용해야 하며, 마이바티스 설정 파일과 루트 어플리케이션 컨텍스트에 모두 작성되어 있다면 서버 구동 시 Context initialization failed된다.