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
'STUDY > Spring' 카테고리의 다른 글
Spring | 스프링 시큐리티(Spring Security) (1) 세팅하기 (2) | 2020.06.26 |
---|---|
Spring | log4j → log4j2로 변경하기 (CVE-2019-17571) (0) | 2020.06.25 |
Spring | MyBatis 연동 (1) ( + JDBC, Oracle, jUnit, Spring-test) (0) | 2020.06.23 |
Spring | Dynamic Web Project로 스프링 프로젝트 생성하기 (0) | 2020.06.22 |
Spring | 이클립스에 STS(Spring Tools Suite) 세팅 하기 ( + Spring Legacy Project 생성 ) (0) | 2020.06.17 |