마트철수
[064] MyBatis와 스프링 연동 + CRUD 연동 본문
2024.08.07(수)
Spring 4일차
ORM: 객체를 테이블에 매핑
XRM: xml로 매핑 → 이걸 지원해주는 라이브러리가 MyBatis !!
오늘은 이러한 MyBatis를 어떻게 구현하는지 배울 예정이다.
Spring
PART01 00
- CH02. 스프링의 특징과 의존성 주입
- CH03.1 스프링 MVC의 기본 구조
- CH03.2 스프링 MVC의 Controller 1
- CH03.3 스프링 MVC의 Controller 2
- CH03.4 SpringLegacy 업데이트
- CH04.1 스프링과 MySQL Database
- CH04.2 MyBatis와 스프링 연동
- CH05.1 영속, 비즈니스 계층의 CRUD 구현
CH04.2 MyBatis와 스프링 연동
MyBatis
SQL 매핑 프레임워크

build.gradle
- ts: transaction 약자 → commit, rollback 처리
implementation "org.springframework:spring-tx:${springVersion}"
implementation "org.springframework:spring-jdbc:${springVersion}"
implementation 'org.mybatis:mybatis:3.4.6'
implementation 'org.mybatis:mybatis-spring:1.3.2'
SQLSessionFactory
- SQLSession: Connection 생성, SQL 전달, 결과 리턴 등 처리
→ 생성 과정이 너무 복잡함 → SQLSessionFactory - SQLsessionFactory: SQLSession 객체 생성
XML 규칙
- 전제조건은 하나임 = wellformed <xxx>
- 개발자가 추가 조건을 만들 수 있음 1) schema 2) dtd
RootConfig.java
- ApplicationContext는 ServletContext의 역할을 대신함(application scope)
스프링과의 연동 처리
mapper.TimeMapper.java
- myBatis 예전 이름이 ibatis여서 아래와 같이 import해옴
- myBatis가 자동 구현해줘서 새로 구현체를 만들 필요가 없음
package org.scoula.mapper;
import org.apache.ibatis.annotations.Select;
public interface TimeMapper {
@Select("SELECT sysdate()")
public String getTime();
}
TimeMapper.xml
- copy 기능 사용해서 오타로 인한 에러 최소화
<?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.scoula.mapper.TimeMapper">
</mapper>

- insert, update, delete에서는 integer 고정임
MyBatis 설치
- alt + enter 하면 자동으로 생성해줌
- 쿼리 정의만 해주면됨
<?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.scoula.mapper.TimeMapper">
<select id="getTime2" resultType="java.lang.String"> // 자동 생성
SELECT SYSDATE() // 내(개발자)가 작성, 쿼리 정의만 해주면됨
</select>
</mapper>
TimaMapperTest.java
- 실제 사용한 쿼리가 무엇인지 확인
- INFO : jdbc.sqlonly - SELECT SYSDATE()

영속, 비즈니스 계층의 CRUD 구현
- 실습 내용으로 중요 파트 외엔 gitHub에 업로드
'KB IT's Your Life > 교육' 카테고리의 다른 글
| [TIL_3] KB 부트캠프: 스프링 MVC의 Controller (0) | 2024.08.11 |
|---|---|
| [065] MyBatis 비즈니스 계층의 CRUD 구현 (0) | 2024.08.08 |
| [063] MyBatis와 스프링 연동 !! (0) | 2024.08.06 |
| [062] 스프링 MVC의 Controller (1) | 2024.08.05 |
| [061] 알고리즘: 백트래킹 (1) | 2024.08.02 |