
자바 객체와 개발자가 지정한 SQL 사이를 자동으로 매핑해주는 기능을 제공하는 프레임워크다. 자바 프로그램과 데이터베이스를 연결하여 데이터를 주고받을 수 있게 해주는 JDBC 인터페이스랑 비슷하지만, Mybatis는 JDBC보다 훨씬 편하다는 장점을 갖고 있다.

DaoImpl 클래스에서 직접 쿼리를 실행했던 JDBC 인터페이스 방식과는 다르게 Mybatis는 SQL문과 프로그램 코드가 분리된다.
JDBC는 DaoImpl 안에 자바 코드와 섞여서 작성되므로 유지보수가 어렵고 코드가 복잡해지는 반면 Mybatis는 SQL을 XML파일로 분리하여 작성하고 Dao에서 호출하기 때문에 유지보수가 용이해지고 가독성이 좋아진다.
JDBC를 통하여 파라미터를 수동으로 설정하고 결과집합 역시 DTO 객체에 수동으로 저장해줘야 하는 번거로움이 Mybatis에서는 대폭 줄어든다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="user"/>
<property name="password" value="user"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="/user/user-mapper.xml"/>
<mapper resource="/product/product-mapper.xml"/>
</mappers>
</configuration>
<ttt>도 태그가 될 수 있으므로 꼭 설정을 해 줘야 한다. <environment> 를 여러개 넣으면 된다. id에 설정된 값으로 구분이 가능하다.package mybatis;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisConnectionTest {
private static SqlSessionFactory sqlFactory = null;
try {
Reader reader = Resources.getResourceAsReader("mybatis/mybatis-config.xml");
sqlFactory = new SqlSessionFctoryBuilder().build(reader)
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlFactory.openSession(true); // 자동커밋 활성화
}
return sqlFactory;
}