프로그래밍/스프링 & 스프링 부트

Spring MariaDB 연동 (MyBatis 사용)

밍구몬 2019. 4. 16. 09:58

MyBatics

 

MyBatics란 객체 지향 언어 자바의 관계형 데이터 베이스 프로그래밍을 보다 쉽게 사용할 수 있도록 도와주는 프레임 워크다.

MyBatics를 사용함으로써 개발자의 부담을 덜어주고, 생산성 향상에 도움이 된다.

기존 JDBC를 이용하여 소스 안에 SQL문을 작성하는 방식이었지만, SQL문을 xml 파일에 작성하여 SQL의 변환이 자유롭고, 가독성이 좋다.

MyBatics를 사용함으로써 생산성, 유지보수성이 향상된다.

Spring MyBatics MariaDB 연동

1. pom.xml 수정

의존성을 위하여 pom.xml에 다음의 내용을 추가해 준다.

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
	
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
	
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
	
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-dbcp2</artifactId>
		    <version>2.6.0</version>
		</dependency>
	
		<!-- mariaDB -->
		<dependency>
			<groupId>org.mariadb.jdbc</groupId>
			<artifactId>mariadb-java-client</artifactId>
			<version>2.3.0</version>
		</dependency>

위는 Mariadb와 MyBatis를 연동하기 위해 반드시 필요한 라이브러리들이다.

버전은 홈페이지에 들어가 원하는 버전을 확인 후 변경해 주어도 된다.

MyBatis : https://mvnrepository.com/artifact/org.mybatis/mybatis

MariaDB : https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

원하는 버전 클릭 후 들어가서 보면 

이 내용이 보일 것이다 이것을 복사하여 바꾸면 된다.

 

2. root-context.xml 수정

src -> main -> webapp -> WEB-INF -> spring에 있는 root-context.xml을 눌러보면 아래에 Namespaces가 보일 것이다. namespaces를 눌러 위처럼 만들어주고 다시 Source로 돌아가 아래의 내용을 추가해 준다.

	<!-- 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="test" />
		<property name="password" value="9qKwb3DM!VWHCuf4" />
	</bean>
    
	<!-- mybatis SqlSessionFactoryBean -->
	<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>

아이피 주소는 로컬이라면 127.0.0.1을 입력해 주면 되고, 포트는 변경하지 않았다면 3306을 입력해 주면 된다.

첫 번째 bean은 DB에 연결하기 위한 정보를 설정하는 부분이고,

두 번째 bean은 Mybatis와 dataSource에서 가져온 DB를 mapper와 연결해주는 부분이다.

 

3. mybatis-config.xml 파일 생성

resources 폴더에 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>

</configuration>

 

4. mapper 패키지 추가

 

다음과 같이 mappers패키지를 추가해 준다.

5. mappers에 파일 추가

 

테스트를 해보기 위해 mappers아래에 testMapper.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="test.mappers.testMapper">

</mapper>

이제 설정은 마쳤고 제대로 연동이 되었는지 테스트해보면 된다.

DB가 제대로 연결되어 있는지 MyBatis가 제대로 연동되었는지 테스트를 해볼 것이다.

 

테스트 전 pom.xml에 아래의 내용이 있는지 확인한다.

		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

만약 4.12가 아닌 4.7로 적혀있으면 4.12로 수정해 주면되고, 위의 내용이 없다면 추가해주면 된다.

 

그다음

src/test/java 밑에 두개의 자바 파일을 만들어 준다.

DBConnctionTest.java

package com.spring.test;

import java.sql.Connection;

import javax.inject.Inject;
import javax.sql.DataSource;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/**/root-context.xml" })
public class DBConnectionTest {
    
    @Inject
    private DataSource ds;
 
    @Test
    public void testConnection(){
    	
        try (Connection con = ds.getConnection()) {
 
            System.out.println("\nDB연결 성공 !!\n");
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

MyBatisTest.java

package com.spring.test;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"})
public class MyBatisTest 
{
    @Inject
    private SqlSessionFactory sqlFactory;
    
    @Test
    public void testFactory(){
        System.out.println("sqlFactory : "+sqlFactory);
    }
    
    @Test
    public void testSession() throws Exception{
        
        try(SqlSession session = sqlFactory.openSession()){
            
            System.out.println("session  : "+session);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

파일을 만들어 준뒤 하나씩 우클린하여 Run As -> JUnit Test를 하면 된다.

 

Run As에 JUnit Test가 없다면 해당 프로젝트 우클릭 -> Properties 클릭 -> Java Build Path -> Add -> Library

JUnit 선택 -> Next

원하는 버전 선택 후 Finish를 해주면 된다.