본문 바로가기

프로그래밍/스프링[Spring]

[Spring(스프링)] Mybatis(마이바티스)와 Mysql 연동하기



오늘은 Mybatis(마이 바티스) 연동에 대해서 알아보겠습니다.

 

Mybatis(마이바티스) 란?

마이바티스(MyBatis)는 자바 퍼시스턴스 프레임워크의 하나로

XML 서술자나 애너테이션(annotation)을 사용하여 저장 프로시저나 SQL 문으로 객체들을 연결시킨다.

마이바티스는 아파치 라이선스 2.0으로 배포되는 자유 소프트웨어이다.

 

Mybatis(마이바티스) 연동하기

1. Mybatis(마이바티스) 라이브러리 추가

스프링 프레임워크에서 Mybatis를 사용하기 위해서 라이브러리가 필요합니다.

 

여기서는 Maven을 이용해서 라이브러리를 추가해보도록 하겠습니다~

 

pom.xml 의 <dependencies> 태그 안에 <dependency>를 추가해주세요~

 

<!-- MyBatis 라이브러리 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.2</version>
</dependency>
 
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.2.0</version>
</dependency>
 
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
 
<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>

 

다음으로 MySql 관련 라이브러리를 추가합니다.

<!-- Mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.31</version>
</dependency>

 

2. Mybatis(마이바티스) xml설정

스프링 프레임워크에서 Mybatis를 사용하기 위한 xml 설정을 해보겠습니다.

 

servlet-contexnt.xml과 같은 경로인 /WEB_INF/spring/appServlet 경로에 

 

datasource-context.xml 파일을 생성합니다.

 

datasource-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-3.0.xsd
                        http://www.springframework.org/schema/jdbc  http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">
    <bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
 
    <!--  DB 연결 정보 -->
      <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/스키마명"/>
        <property name="username" value="DB 아이디"/>
        <property name="password" value="DB 비밀번호"/>
    </bean>
</beans> 

 

3. web.xml 작성

자 그리고 xml을 인식하기 위해서 web.xml에 다음의 코드를 추가합니다.

<!-- Mybatis 설정 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*spring/appServlet/*-context.xml</param-value>
</context-param>

 

4. mapper-context.xml 작성

다음으로는 Mybatis의 xml파일들을 읽기 위한 설정을 합니다.

 

datasource-context.xml와 같은 경로에 mapper-contenxt.xml 파일을 생성합니다.

 

 

 

 

mapper-contenxt.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:spring/mybatis/mybatis-config-base.xml" />
        <property name="mapperLocations">
            <list>
                <value>classpath*:spring/mapper/**/*.xml</value>
            </list>
        </property>
        <property name="transactionFactory">
            <bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
        </property>
    </bean>
 
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>
</beans>

<property name="configLocation" value="classpath:spring/mybatis/mybatis-config-base.xml" />

 

이부분은 mybatis에 대한 관련 설정으로 5번으로 가시면 됩니다.

 

 <value>classpath*:spring/mapper/**/*.xml</value> 이 부분을 보시면

 

src/main/resources 경로의 spring/mapper/의 모든 경로의 xml 파일을 읽는 설정입니다

 

(/**/*.xml 이기 때문에 mapper 폴더의 한뎁스 아래의 xml을 읽는다는 의미.)

 

 

5. mybatis-config-base.xml 작성

<property name="configLocation" value="classpath:spring/mybatis/mybatis-config-base.xml" />

 

위에 선언한 경로대로 mybatis-config-base.xml 파일을 생성 후 작성합니다.(폴더가 없는경우 만들어서 넣어주시면 됩니다)

 

소스코드는 아래와 같이 작성합니다. mybatis 설정에 대한 내용은 추후에 다른 글로 상세하게 알려드리겠습니다~

<?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> 
        <setting name="cacheEnabled"              value="true"/>         <!-- mybatis cache 사용여부 -->
        <setting name="lazyLoadingEnabled"        value="false"/>         <!-- 지연로딩 사용여부 -->
        <setting name="multipleResultSetsEnabled" value="true"/>         <!-- 한 개의 구문에서 여러 개의 ResultSet을 허용할지 여부 -->
        <setting name="useColumnLabel"            value="true"/>          <!-- 컬럼명 대신 컬럼 라벨을 사용 -->
        <setting name="useGeneratedKeys"          value="false"/>         <!-- 생성키에 대한 JDBC 지원 허용 여부 -->
        <setting name="defaultExecutorType"       value="SIMPLE"/>        <!-- 디폴트 Executor 설정(SIMPLE은 특별히 동작하는 것은 업음) -->
        <setting name="defaultStatementTimeout"   value="3000"/>         <!-- DB 응답 타임아웃 설정 -->
        <setting name="safeRowBoundsEnabled"      value="false" />        <!-- 중첩구문내 RowBound 사용 허용여부 -->
        <setting name="mapUnderscoreToCamelCase"  value="true" />        <!-- 전통적 DB 컴럼명을 JAVA의 Camel표기법으로 자동 매핑 설정 -->
        <setting name="localCacheScope"           value="SESSION" />     <!-- 로컬캐시 사용여부(SESSION: 세션을 사용해서 모든쿼리를 캐시) -->
        <setting name="jdbcTypeForNull"           value="OTHER" />        <!-- mybatis로 넘어오는 parameter가 null인 경우, jdbcType을 Setting -->
        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" /><!-- 지연로딩을 야기하는 객체의 메소드를 명시 -->
    </settings>
</configuration>

 

6. *SQL.xml 파일 작성

자 이제 SQL.xml 파일을 작성하시면 됩니다.

 

4번에서 설정한 <value>classpath*:spring/mapper/**/*.xml</value>

 

이 부분대로 spring/mapper/폴더/_*SQL.xml 파일을 생성해서 사용하시면 됩니다!

 

자 이렇게 하면 연동은 끝입니다. 추후 사용방법에 대해서는 다른 글로 찾아 뵙겠습니다!!

 

감사합니다~