2025년 9월 15일 월요일 - 2 (78일차)

Jeonghoon·2025년 9월 15일

jeonghoon's Study

목록 보기
80/128

💾 MyBatis 정리 노트


🧱 Dao (Data Access Object)

구분설명
정의Java에서 DB와 직접 연결하고 SQL 실행을 담당하는 순수 JDBC 방식
역할데이터베이스와의 연결, SQL 실행, 결과 집합(ResultSet) 처리
단점반복되는 코드가 많고, 유지보수가 어렵다

주요 인터페이스

인터페이스역할
ConnectionDB 연결 객체
PreparedStatementSQL 실행 객체 (매개변수 바인딩 지원)
ResultSetSQL 실행 결과를 저장하는 객체

⚙️ MyBatis

MyBatis는 JDBC보다 더 편리한 DB 연동 기능을 제공하며, 객체와 SQL 간의 매핑을 자동으로 처리하는 프레임워크입니다.

항목내용
주요 기능SQL 매핑, 결과 자동 매핑, 유연성, Spring 공식 지원
장점XML 또는 어노테이션으로 SQL 관리 → 코드 분리 \& 유지보수 용이
공식 지원start.spring.io에서 스프링 부트 프로젝트 설정 시 MyBatis Starter 지원

📄 Java와 DB 연동 설정 (application.properties)

application.properties 파일은 resources 폴더 내에 존재하며, MyBatis와 DB를 연결하기 위한 설정을 정의합니다.

# JDBC 연결 설정 예시
spring.datasource.url=jdbc:mysql://localhost:3306/DB명
spring.datasource.username=계정명
spring.datasource.password=비밀번호

💡 Tip: UTF-8 인코딩 문제 발생 시, IntelliJ → 설정 → '파일 인코딩' → properties default encoding: UTF-8로 설정하세요.


🧩 Mapper Interface

Mapper Interface는 Dao의 역할을 대신하며, 인터페이스와 어노테이션을 통해 SQL을 실행합니다.

구분JDBCMyBatis
SQL 작성insert into student(name, kor, math) values (?, ?, ?)insert into student(name, kor, math) values (#{매개변수1}, #{매개변수2}, #{매개변수3})
매개변수 전달 방식물음표(?)로 대입#{}로 대입 (자동 매핑)
매개변수 매핑 조건수동 지정 필요Dto 변수명 = DB 컬럼명 일치 시 자동 매핑

📘 즉, MyBatis는 Dao의 SQL 직접 작성과 PreparedStatement 작업을 대체하며, 코드량을 크게 줄입니다.


💡 사용 방식 요약

1️⃣ Mapper Interface를 생성 후, @Mapper 어노테이션을 붙인다.
2️⃣ SQL문에 어노테이션을 추가한다. (@Select, @Insert, @Update, @Delete)
3️⃣ Service에서 의존성 주입(@Autowired) 을 통해 Mapper를 호출한다.
4️⃣ Dto의 변수명과 DB 컬럼명이 일치하면, 마이바티스가 자동으로 매핑해준다.

0개의 댓글