
데이터의 입력, 조회, 수정, 삭제(CRUD)를 보다 편하게 하기 위해 xml로 구조화한 Mapper 설정 파일을 통해서 JDBC를 구현한 영속성 프레임워크
기존에 JDBC를 통해 구현했던 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 xml 설정을 통해 쉽게 구현할 수 있게 해준다.
쉽게 말해서, JDBC와 비슷하다
xml로 구조화한 Mapper 설정 파일을 통해 JDBC를 구현한 영속성 프레임워크
<DOCTYPE ~~~Mapper.dtd> Mapper로 쉽게 한다
http://www.mybatis.org/mybatis-3/ko
이전에 JDBC Template을 통해 SQL을 실행하였다면 Mybatis는 해당 흐름을 전용 라이브러리를 통해 대체하여 동작한다고 생각하면 된다.

Mybatis는 해당 흐름을 전용 라이브러리를 통해 대체해서 동작
DAO에서는 코드가 짧아짐 = JDBC 프레임워크이기에 Mybatis 설정 파일에 다 적혀 있기 때문에 이것들도 lib이 아닌 pom에 넣어서 붙여주면 된다
✔️pom.xml
<!-- 스프링에서 JDBC를 사용할 수 있게 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
<!-- 위 properties의 지정한 Spring 버전을 따라감 -->
</dependency>
<!-- Mybatis 영속성 프레임워크 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- Spring - Mybatis 연결 모듈, 연결 역할을 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- 커넥션 풀 기능을 사용하기 위한 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.9.0</version>
</dependency>
- Mybatis 영속성 프레임워크 가져오기
- Spring Mybatis 연결 모듈, 연결 역할 하는 라이브러리
- 커넥션 풀 기능 사용 라이브러리 : 더이상 그때그때 커넥션 풀 만들어서 사용하지 않음
설치가 잘 되면 Maven Dependencies에 mybatis가 추가되어 있다
JDBC 드라이버 (ojdbc11)
https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc11
Spring에서 JDBC지원하는 모듈 (spring-jdbc)
https://mvnrepository.com/artifact/org.springframework/spring-jdbc
Mybatis 라이브러리 (mybatis)
https://mvnrepository.com/artifact/org.mybatis/mybatis
Spring에서 쉽게 Mybatis를 사용 가능하게 만드는 모듈(spring-mybatis)
https://mvnrepository.com/artifact/org.mybatis/mybatis-spring
DataBase Connection Pool 사용을 위한 라이브러리(commons-dbcp2)
https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2
기존에 Apache project에서 ibatis를 운영하던 팀이 2010년 5월 9일에 Google 팀으로 이동하면서 Mybatis로 이름을 바꿈
Mybatis는 기존의 ibatis의 한계점이였던 동적 쿼리와 어노테이션 처리를 보강하여 더 나은 기능을 제공
반대로 ibatis는 현재 비활성화 상태이며, 기존에 ibatis로 만들어진 애플리케이션의 지원을 위해 라이브러리만을 제공하고 있음


atis vs Mybatis
ibatis가 더 옛날이다
Mybatis
원래 DB랑 연결하기 위해선
1. service에서 Connection 사용
이걸 DataSource(Connection 상위버전)+ Mybatis + 트랜잭션 자동으로 제어 + close 자동으로 제어
⇒ SqlSession Template안에 다 들어가 있음
탬플릿처럼 쉽게 쉽게 쓰기 위해서 한번 만들어둔 것
근데 앞에 SqlSession Factory Bean이란 게 있음
공장(SqlSession Factory)에서 제품을 만들고 → 나온 제품(SqlSession Template)을 이용
Window - Preferences - XML - XML Catalog - User Specified Entries클릭– Add… 클릭


‘src/main/resources’폴더에 mybatis-config.xml 파일 생성


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "
-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
<!-- SqlSessionTemplate 생성 시 적용될 설정 작성 부분-->
<settings>
<!-- insert 또는 update에 사용되는 값 중 null이 있을 경우에 대한 설정
해당 설정이 없을 경우-> SQL 구문에 null 포함되어 있다는 오류 발생.
해상 설정이 있을 경우-> 오류를 발생 시키지 않고 NULL 값을 컬럼에 대입
단, NOT NULL 제약조건이 없는 컬럼에만 가능함.
** value 설정 시 NULL 은 반드시 대문자로 작성 (소문자 null은 오류가 발생함) -->
<setting name=
" jdbcTypeForNull" value="NULL" />
</settings>
<!-- 별칭 작성 부분-->
<!-- VO클래스의 패키지명 + 클래스명 작성하는 것이 불편하기 때문에 짧은 별칭 부여-->
<typeAliases>
<typeAlias type=
" edu.kh.fin.member.model.vo.Member" alias="Member" />
</typeAliases>
<!-- mapper 파일(SQL 작성되는파일) 위치 등록 부분-->
<mappers>
</mappers>
<mapper resource="/mappers/member-mapper.xml" />
</configuration>