2016년 7월 26일 화요일

Spring JDBC로 작성된것(EMP예제)을 MyBatis(마이바티스) 변환하는 방법 -스프링실무교육학원


- Spring JDBC로 된 오라클 EMP 테이블 예제를 Spring, MyBatis(마이바티스) 변환하는 방법 -스프링실무교육학원


위 Spring JDBC 예제를 MyBatis를 이용한 예제로 수정하려면 아래 예제 작성 후 다음과 같은 순서로 변경 해 보자.

1. pom.xml에 mybatis 관련 부분 추가 후 maven update

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


2. empServlet-servlet.xml 하단에 
    mybatis용 설정 추가(SqlSessionFactoryBean, SqlSessionTemplate)


  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     <property name="dataSource" ref="dataSource" />
     <property name="configLocation" value="classpath:mybatis/sqlmap-config.xml" />
     <property name="mapperLocations" value="classpath:mybatis/mappers/*.xml" />
</bean>

 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
     <constructor-arg index="0" ref="sqlSessionFactory" />
</bean>

3. 위 설정 파일의 경로에 맞도록 MyBatis 설정 파일 , 매퍼 XML 파일 생성

[classpath:mybatis/sqlmap-config.xml]

?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
  <configuration>
  <typeAliases>
  <typeAlias type="model.Emp" alias="emp" />
  </typeAliases>
  </configuration>

[classpath:mybatis/mappers/emp.xml]

   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="dao.EmpDao">
  <resultMap type="emp" id="emp">
  <result property="empno" column="empno" />
  <result property="ename" column="ename" />
  <result property="sal" column="sal" />
  </resultMap>
  <select id="getEmpAll" resultMap="emp">select empno,ename,sal from emp</select>
  </mapper>


4. DAO 패키지에 EmpDao, EmpDaoImpl 두개의 클래스 작성

[EmpDao.java]

package dao;

import java.util.List;
import org.springframework.dao.DataAccessException;
import edu.biz.web.model.Emp;

public interface EmpDao {
public List<Emp> getEmpAll() throws DataAccessException;
}

[EmpDaoImpl.java]

package dao;

import java.util.List;

import javax.annotation.Resource;

import org.apache.ibatis.session.SqlSession;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;

import model.Emp;

@Repository("empDao")
public class EmpDaoImpl implements EmpDao {
@Resource(name="sqlSession")
private SqlSession sqlSessionTemplate;
public List<Emp> getEmpAll() throws DataAccessException {
EmpDao dao = sqlSessionTemplate.getMapper(EmpDao.class);
List<Emp> empList = null;
empList = dao.getEmpAll();
return empList;
}

댓글 없음:

댓글 쓰기