본문 바로가기

STUDY/Spring

Spring | MyBatis 연동 (2) (+ Oracle)

0. MyBatis?

 MyBatis는 Spring Framework와 연동이 가능한 프레임워크로, JDBC로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 매핑을 대신해줌. 특히 많이 사용하는 이유는 DAO와 SQL문을 따로 관리할 수 있다는 장점 때문.

 

MyBatis를 이용한 SQL문 작성법 구분

- XML파일만 이용해 작성: DAO와 SQL문을 따로 작성하는 방법. 수정하기 편리함.

- annotation과 interface를 이용: 별도 DAO클래스 없이 작성. 

- interface와 XML을 이용: 간단한 SQL문은 annotation을, 복잡한 SQL문은 XML을 이용하는 방법. 

 

이번 글에서는 XML파일에만 쿼리문을 작성하는 방법을 이용할 것임!

 

 

 

1. DAO 패키지 및 클래스 생성

 

간단하게 MyBatis작동만 해볼 것이기 때문에 DAO만 만듦.

testDao는 interface이며 testDaoImpl은 testDao를 상속받은 일반 클래스임.

 

 

 

2. mapper파일 생성 및 쿼리문 작성

 

mapper라는 패키지 생성 후 하위에 xml파일 작성.

*root-context.xml에 작성한 경로에 맞게 해야함!

 

 

 

mapper의 namespace는 dao클래스에서 해당 mapper를 선택하기 위한 용도라고 이해하면 쉬움(선택자/구분자).

 

<!-- mapper/test.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">

</mapper>

 

 

  • <select>엘리먼트: SELECT 구문을 매핑
  • id: 구문을 찾기위한 구분자
  • resultType: 조회한 데이터 값의 데이터 타입 혹은 collection지정. dto로 지정하는 것 가능

! 오라클 hr계정에 원래 있는 JOBS라는 테이블을 조회함.

<!-- mapper/test.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">
	<select id="getJobs" resultType="map">
		SELECT * FROM JOBS
	</select>
</mapper>

 

+) 읽어보기

 

MyBatis – 마이바티스 3 | 매퍼 XML 파일

Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면 ��

mybatis.org

 

 

3. dao작성

 

우선 interface에 선언

package spring.com.mybatis.dao;

public interface testDao {
	
	public void getJobs();
	
}

 

 

상속받은 클래스에 오버라이딩

 

  • @Repository: dao를 스프링에 인식시킴
  • @Auotowired: 자동으로 Bean을 매핑해주는 애노테이션
  • selectList: 반된되는 데이터 값이 하나가 아니므로 selectList로 설정. 만약 한 개의 값만 반환받는다면 selectOne으로!
package spring.com.mybatis.dao.impl;

import java.util.List;
import java.util.Map;

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

import spring.com.mybatis.dao.testDao;

@Repository
public class testDaoImpl implements testDao {
	
	@Autowired
	SqlSession sqlSession;
	
	String namespace = "test.";
	
	@Override
	public void getJobs() {
		List<Map<String, Object>> result = sqlSession.selectList(namespace+"getJobs");
		result.forEach(obj -> {
			System.out.println(obj.toString());
		});
	}

}

 

 

 

콘솔 출력 결과

 

 

 

 

+) 읽어보기

 

MyBatis – 마이바티스 3 | 시작하기

XML에서 SqlSessionFactory 빌드하기 모든 마이바티스 애플리케이션은 SqlSessionFactory 인스턴스를 사용한다. SqlSessionFactory인스턴스는 SqlSessionFactoryBuilder를 사용하여 만들수 있다. SqlSessionFactoryBuilder는 XM

mybatis.org

 

프로그램 개발 지식 공유, devkuma

데브쿠마는 프로그래밍 개발에 대한 지식을 공유합니다.

www.devkuma.com