본문 바로가기

프로젝트

[Spring/Maven] MySQL, MyBatis 연동 및 설정

MySQL과 MyBatis 설정을 위해 root-context.xml에서 Namespaces로 이동

 

다음과 같이 체크 xml 태그를 위한 설정이다.


MySQL 연동

	<!-- DataSource 설정 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    	<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
    	<property name="url" value="jdbc:mysql://127.0.0.1:3306/scott?"></property>
    	<property name="username" value="root"></property>
    	<property name="password" value="123456"></property>
	</bean>

다시 Source창으로 돌아와서 DataSource 설정을 한다. 

*DataSource를 이용하여 MySQL 연결을 좀 더 간단하게 할 수있다! 

 

root-context.xml에서 설정을 다 끝냈으니 이제 MySQL이 연결되었는지 테스트 코드를 돌려보자`ㅅ'!

 

src/test/java

DataSourceTest.java 클래스(MySQL 연결 테스트 코드)를 하나 생성하자.

 

[DataSourceTest.java]

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
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/*.xml"})
public class DataSourceTest {
	@Autowired  //spring 전용, @Inject : 자바/spring, @Resource : 이름으로 연결
	private DataSource dataSource;
	
	@Test
	public void testConn() {
		try {
			Connection conn = dataSource.getConnection();
			System.out.println(conn);
			System.out.println("연결성공!");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
	}

}

[Run As]-[JUnit Test]로 실행

 

연결성공!


MyBatis 연동

 

	<!-- 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/**/*.xml" /> 	
	</bean>
	
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
	<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>	
	</bean>

root-context.xml에서 SqlSessionFactory 객체를 생성해준다. 

 

mybatis가 연결되었는지 테스트 코드를 돌려보자`ㅅ'!

 

마찬가지로 test폴더에 MybatisTest.java 생성

 

[MybatisTest.java]

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)
//속성 경로에 xml파일을 이용해 스프링이 로딩 된다.
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/**/root-context.xml" })

public class MybatisTest {
    //위에서 스프링이 정상적으로 동작할 경우 스프링이 생성해서 주입해준다.
    //root-context.xml 파일에서 설정한 SqlSesiionFactoryBean설정에 문제가 있었다면 이 코드에서 에러가 발생한다.
	@Inject
	private SqlSessionFactory sqlFactory;

	@Test
	public void testFactory() {
		System.out.println(sqlFactory);
	}

	@Test
	public void tesSession() throws Exception {
		try (SqlSession session = sqlFactory.openSession()) {
			System.out.println(session);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

[Run As]-[JUnit Test]로 실행

 

 


MyBatis 설정

[mybatis-config.xml 만들기]

src/main/resources

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

해당 경로에 mybatis-config.xml(mybatis설정 파일)을 만들어준다.

여기서 typeAliases, environments, mappers를 관리한다. 

 

[Mapper 파일 만들기]

src/main/resources 아래 mapper들을 관리하는 mappers폴더를 하나 만든다.

여기서 mapper파일을 만들고 관리한다.

 

namespace가 너무 길어서 위에다가 선언해두었다..

 

이런식으로 셋팅하고 사용하면 된다!