마트철수

[064] MyBatis와 스프링 연동 + CRUD 연동 본문

KB IT's Your Life/교육

[064] MyBatis와 스프링 연동 + CRUD 연동

마트스 2024. 8. 7. 12:26


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  매핑 프레임워크

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>

 

 

TimerMapper 인터페이스 경로

 

  • 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()

INFO : jdbc.sqlonly - SELECT SYSDATE()

영속, 비즈니스 계층의 CRUD 구현

 

  • 실습 내용으로 중요 파트 외엔 gitHub에 업로드