전체글
일상
코딩
게임
블로그 운영
IT
여행

스프링 프레임워크(Spring STS) 개발 #3 - 스프링 MyBatis 연동

MyBatis는 SQL Mapper 라이브러리로 JDBC 작업시에 반복 되는 코드를 줄이고, SQL문을 처리하기 위한 별도의 파일을 계속해서 만드는 번거로운 작업을 줄일 수 있습니다. 그리고 Java 코드와 SQL문을 분리하여 SQL문의 관리를 좀더 수월하게 할 수 있습니다.

스프링 MyBatis 연동


mybatis


 스프링과 MyBatis 사이에 연동을 위해서는 두 프레임 워크를 이어주는 MyBatis-Spring 모듈 외에 여러가지 라이브러리들이 필요합니다.


MyBatis 라이브러리 추가


 아래에 코드들을 [pom.xml]에 추가합니다. 다른 버전을 사용하고 싶으시면 Maven Repository 링크를 눌러서 다른 버전을 알아본 뒤 추가하시기 바랍니다.


<dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis</artifactId>

    <version>3.4.4</version>

</dependency>


<dependency>

    <groupId>org.mybatis</groupId>

    <artifactId>mybatis-spring</artifactId>

    <version,>1.3.1</version>

</dependency>


https://mvnrepository.com/artifact/org.springframework/spring-jdbc

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jdbc</artifactId>

    <version>4.3.10.RELEASE</version>

</dependency>


https://mvnrepository.com/artifact/org.springframework/spring-test

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-test</artifactId>

    <version>4.3.10.RELEASE</version>

    <scope>test</scope>

</dependency>



root-context.xml 수정


 웹과 관련이 없는 라이브러리들은 root-context.xml을 통해서 연동을 시킵니다. MyBatis를 사용하기 전, 조금 전에 받은 spring-jdbc 모듈을 이용하여 JDBC 커넥션을 자동으로 처리할 수 있도록 DataSource를 추가해줍니다.




 프로젝트 폴더에서 [src/main/webapp/WEB-INF/spring] 내에 있는 [root-context.xml] 파일을 엽니다.




 [root-context.xml] 하단에 [Namespaces] 탭을 선택하고, 위에 이미지처럼 aop, beans, context, jdbc, myBatis-spring을 선택하고 [저장]을 합니다.




 저장을 하고 [Soruce] 탭에 들어가보면, root-context.xml에 네임스페이스가 추가된 것을 볼 수 있습니다.




이제 <beans></beans> 사이에 JDBC를 사용하기 위한 DataSource를 추가합니다. 코드는 복사 붙여넣기를 할 수 있도록 아래에 기재해두었습니다. MariaDB와 MySQL을 잘 보고 붙여넣기 바랍니다.


MariaDB JDBC DataSource

<!-- MariaDB JDBC DataSource -->

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName" value="org.mariadb.jdbc.Driver" />

<property name="url" value="jdbc:mariadb://127.0.0.1:3306/test" />

<property name="username" value="root" />

<property name="password" value="passwd" />

</bean>


MySQL JDBC DataSource

<!-- MySQL JDBC DataSource -->

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 

<property name="driverClassName" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://127.0.0.1:3306/test" />

<property name="username" value="root" />

<property name="password" value="passwd" /> 

</bean>



SQL Mapping을 위한 MyBatis 관련 추가 파일 생성


 MyBatis 설정 기능을 활용할 수 있도록 [mybatis-config.xml] 파일을 생성합니다. mybatis-config는 select 쿼리 결과문을 bean과 list에 담아서 결과를 출력해주는 역할과 다양한 기능을 쓸수 있도록 도와줍니다.



 [src/main/resources]에서 오른쪽 클릭을 하고 [Other]을 클릭합니다.




 [Other]에서 [XML Fille]을 찾아서 [Next]를 누릅니다.




 [mybatis-config.xml]을 입력하고 [Finish]를 누릅니다.




 방금 생성한 [mybatis-config.xml]에 위에와 같은 코드를 입력하고 저장을 합니다.


mybatis-config.xml

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

<typeAliases>


</typeAliases>

</configuration>




 다음은 사용할 SQL 쿼리문을 저장 시키기 위한 Mappers 폴더를 생성합니다.  [src/main/resources]에서 오른쪽 클릭을 하고 [Package]를 선택합니다.




 [Package]의 Name을 mappers로 지정하고 [Finish]를 누릅니다.




 생성된 [mappers] 패키지에 테스트를 위한 [*Mapper.xml] 파일을 추가합니다. 저는 [testMapper.xml]로 추가하였습니다.



추가한 [*Mapper.xml] 파일에 위에와 같은 코드를 넣습니다. [namespace]의 지켜야할 형식은 따로 없지만 될 수 있으면 패키지명과 함께 *Mapper를 넣어서 [xxx.yyy.zzz.*Mapper]로 합니다.


*Mapper.xml

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

<!DOCTYPE mapper

  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="hanazuou.imas.mlst.testMapper">


</mapper>



 이제 마지막으로 root-context.xml에 myBatis Mapping을 위한 경로를 지정해줄 차례입니다. SQL 실행시 객체를 생성해주는 [sqlSessionFactory]를 root-context.xml에 추가해줍니다.

 property를 보시면 DB와 스프링을 연동 시켜주는 JDBC의 dataSource, bean과 list에 select 결과문을 담아주는 mybatis-config.xml, SQL문이 쓰일 *Mapper.xml의 경로가 적혀있습니다.




 그리고 마찬가지로 root-context.xml에 sqlSession을 추가합니다. DB에 사용이 끝나면 sqlSessionFactory에 접근하여 커넥션을 close()를 하는 기능을 해줍니다. 이를 추가함으로써 SQL문을 사용할 때마다 커넥션을 일일히 끊어줘야하는 번거로움이 사라집니다.


sqlSessionFactory

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />

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

<property name="mapperLocations" value="classpath:/mappers/**/*Mapper.xml" />

</bean>


sqlSession

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">

<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>

</bean>  


 이로써 스프링에 MyBatis를 연동시키기 위한 설정 작업이 완료되었습니다. 다음 글에서는 컨트롤러 사용방법과 이를 이용해서 MyBatis로 DB 쿼리문을 사용하는 방법에 대해서 알아보겠습니다.




도움이 되셨으면 공감을 눌러주세요!