스프링연동하기/spring3 mybatis 설정

스프링3(Spring3) - mybatis 연동(1)

개발로짜 2014. 7. 23. 18:02

이번 포스팅은 spring과 mybatis db 연동을 해볼 예정임

maven에 익숙치 않아서인지 삽질좀 한듯 -0-ㅋㅋㅋ

우선은 pom.xml 에 다음과 같이 dependency들을 추가해주도록 하자

<!-- add maven -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.2.7</version>
</dependency>
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>1.2.2</version>
</dependency>
<dependency>
	<groupId>commons-dbcp</groupId>
	<artifactId>commons-dbcp</artifactId>
	<version>1.4</version>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.31</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>${spring-framework.version}</version>
</dependency>


이어서 resources -> spring -> application-config.xml 에 다음과 같이 소스 추가를 하자


<context:component-scan base-package="com.spring.web"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/db명" />
        <property name="username" value="아이디" />
        <property name="password" value="패스워드" />
</bean>
<!-- SESSIONFACTORY 설정 -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- ibatis와 다르게 sql디렉토리에 xml 추가만 해주면 별도추가없이 알아서 xml내의 쿼리 인식 -->
        <property name="mapperLocations" value="classpath*:sql/**/*.xml" />
 </bean>
 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg ref="sqlSessionFactory" />
 </bean>


그리고 resources내에 sql 폴더를 생성 후 다음 파일을 추가해주자


sql.xml


HelloWorldController클래스에 코드 추가

@Autowired
private SpringDao dao;
	
@RequestMapping("/queryTest")
public void queryTest(){
		try {
			ArrayList<Map<String, Object>> list = dao.queryTest();
			if(list != null && list.size() > 0){
				for(Map<String, Object> map : list) {
					Set key = map.keySet();
					  for (Iterator iterator = key.iterator(); iterator.hasNext();) {
					                   String keyName = (String) iterator.next();
					                   String valueName = (String) map.get(keyName);
					   
					                   System.out.println(keyName +" = " +valueName);
					  }
				}
			}
		} catch (SQLException e) {
			System.out.println(e.toString());
		}
}


com.spring.web.dao 패키지 생성 후 내부에 SpringDao.java 클래스를 생성하도록 하자


package com.spring.web.dao;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class SpringDao {
	
	@Autowired
	private SqlSession sql;
	
	@SuppressWarnings("unchecked")
	public ArrayList<Map<String, Object>> queryTest() throws SQLException {
		return (ArrayList)sql.selectList("sql.queryTest");
	}
}

이걸로 jdbc 연동이 끝났다.


완전 심플하지 않은가~~!! 안돼


물론 transaction 처리는 제외한 예제이다


위 소스를 실행후 웹페이지에 화면은 나오지 않을것이다.

Console에서 다음 하단 그림과 같이 값이 찍혀 나온다면 정상적으로 출력된다면 db연동은 끝~~






원래는 interface 만들고 implements 받고 해야하는데 귀찮음..

그냥 심플하게 연동만 해보는것임  즐거워


다음 포스팅은 transaction 관한 설정을 해보도록 하겠음!!