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>
+) 읽어보기
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());
});
}
}
+) 읽어보기
'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 |