* MyBatis
- 객체지향언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 구현할 수
있도록 도와 주는 개발 프레임워크임.
- 자바는 JDBC API를 제공해 주지만, 이런 JDBC를 이용하면 한 개의 클래스에
반복된 코드가 존재, 한 파일에 Java 언어와 SQL 언어가 섞여 있어서 재사용성
등이 안 좋아지는 단점이 발생함.
- MyBatis는 이러한 JDBC의 단점들을 개선했으며, 개발자가 작성한 SQL 명령어와
자바 객체를 매핑해 주는 기능을 제공하며, 기존에 사용하던 SQL 명령어를 재사용이
가능하게 해 줌.
* MyBatis 의 특징
- 한 두 줄의 자바 코드로 DB 연동을 처리해 줌.
- SQL 명령어를 자바 코드에서 분리하여 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">
<!-- namespace 명은 패키지 포함해서 인터페이스 이름으로 작성을 해 주어야 함.
namespace는 mapper 둘을 구분하는 식별자로 매우 중요함. -->
<mapper namespace="com.spring.model.EmpDAO">
<select id="allList" resultType="com.spring.model.EmpDTO">
select * from emp order by empno
</select>
<select id="deptList" resultType="com.spring.model.DeptDTO">
select * from dept order by deptno
</select>
<select id="mgrList" resultType="com.spring.model.EmpDTO">
select * from emp where job = 'MANAGER' order by empno
</select>
<insert id="add" parameterType="com.spring.model.EmpDTO">
insert into emp values(#{empno}, #{ename}, #{job}, #{mgr},
sysdate, #{sal}, #{comm}, #{deptno})
</insert>
</mapper>
* MyBatis 설정 작업
- 스프링과 MyBatis를 연동하기 위한 라이브러리 설정 - pom.xml
- MyBatis 프레임워크 라이브러리 추가.
- MyBatis-Spring 라이브러리 추가.
- Spring-JDBC 라이브러리 추가.
- 데이터베이스와 연결을 담당하는 DataSource 객체 설정.
<!-- mybatis 프레임워크 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- mybatis-spring 라이브러리 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- spring-jdbc 라이브러리 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- lombok 라이브러리 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<!-- c3p0(스프링 커넥션풀 설정) 라이브러리 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>