[MyBatis]
- SQL 매핑 프레임워크
- 기존: DAO에서 sql을 작성. => JAVA+SQL 혼합된 상태에선 가독성 낮고 유지보수가 어렵다.
- Connection 제어를 개발자가 하지 않아도 됨.
- MVC에서 SQL 실행 후 결과를 VO에 저장 후 호출된 쪽으로 return 하지만, 자동을 VO 생성해서 처리.
[Dependency 설정]
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
- sqlSessionFactory Bean 추가(root-context.xml)
- 패키지 명 변경 필요
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<mybatis-spring:scan base-package="org.zerock.mapper" />
[사용법]
인터페이스를 통한 사용
public interface TimeMapper {
@Select("select sysdate from dual")
public String getTime();
}
@RunWith(SpringJUnit4ClassRunner.class)
@Log4j2
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class TimeMapperTests {
@Setter(onMethod_ = @Autowired)
private TimeMapper timeMapper;
@Test
public void testGetTime() {
log.info(timeMapper.getTime1());
}
}
xml 파일을 통한 사용
- resources\com.~~~\파일명.xml 생성 후 내용 입력
- interface에서 생성
<?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="org.zerock.mapper.TimeMapper">
<select id="getTime2" resultType="string">
select sysdate from dual
</select>
</mapper>