2025년 10월 14일 화요일 (92일차)

Jeonghoon·2025년 10월 14일

jeonghoon's Study

목록 보기
95/128

🧩 MyBatis & SQL DDL 정리

📘 MyBatis

🔹 MyBatis 사용법 - 어노테이션

  1. 인터페이스를 생성 후 @Mapper 어노테이션을 주입한다.
  2. SQL DML 어노테이션을 사용한다.
구문어노테이션예시
INSERT@Insert("SQL")@Insert("INSERT INTO ...")
SELECT@Select("SQL")@Select("SELECT * FROM ...")
DELETE@Delete("SQL")@Delete("DELETE FROM ...")
UPDATE@Update("SQL")@Update("UPDATE ...")
  1. SQL 내 매개변수는 #{매개변수}로 표현한다.
  2. 반환타입은 SQL 결과가 자동으로 매핑된다.
반환 타입설명
intInsert/Update/Delete에 의해 처리된 레코드 수 반환
Map / Dto / ListSelect에 의해 조회된 레코드 반환
  1. Dto의 멤버변수명과 SQL의 속성명은 일치해야 한다.
  2. 생성된 PK값 매핑하기
@Options(useGeneratedKeys=true, keyProperty="PK속성명")

→ 반환값이 아닌 Dto 등 객체로 매핑됨


🔹 MyBatis 사용법 - XML

  1. 인터페이스를 생성 후 @Mapper 어노테이션을 주입한다.
  2. application.properties에 설정을 추가한다.
mybatis.mapper-locations=classpath:/폴더명/파일명.xml
# *.xml : 모든 XML 파일 지칭
  1. 설정한 경로에 XML 파일 생성
<?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">
  1. 내가 만든 Mapper 인터페이스 연동
<mapper namespace="인터페이스경로"> </mapper>
  1. <mapper> 내부에 SQL 마크업 작성
SQL 구문태그 예시
INSERT<insert></insert>
SELECT<select></select>
DELETE<delete></delete>
UPDATE<update></update>
  1. SQL 마크업 속성 정리
속성명설명
id인터페이스 내 추상메소드명
parameterType매개변수 타입 경로 (2개 이상일 경우 Dto로 묶거나 생략 가능)
returnType반환타입 경로 (생략 가능)
useGeneratedKeys / keyProperty생성된 PK값 매핑
{}SQL 내부에서 Java 매개변수 대입

🔹 동적쿼리 (Dynamic SQL)

  • SQL 실행 시점에 MyBatis가 제공하는 문법으로 SQL을 동적으로 구성
  • 사용 위치
    • 어노테이션: <script> 내부
    • XML: <select> 등 DML 태그 내부
태그설명예시
<if>조건문 참일 때 SQL 실행<if test="조건문">SQL</if>
<foreach>반복 SQL 생성<foreach collection="list" item="it" separator=",">#{it}</foreach>
<where>조건절 자동 처리여러 if 조건을 and/or로 연결

🔹 Spring SQL 자동 실행

파일명용도설명
schema.sqlDDL(SQL 정의)테이블 생성/삭제, 서버 실행 시 자동 실행 (DROP → CREATE 순서 중요)
data.sqlDML(SQL 데이터)샘플 데이터 작성

⚙️ application.properties 설정

spring.sql.init.mode=always # always(사용) / never(미사용)
spring.sql.init.schema-locations=classpath:/폴더명/schema.sql
spring.sql.init.data-locations=classpath:/폴더명/data.sql
# classpath = resources 이하 경로

🧮 SQL - DDL

🔸 ALTER 문법 정리

기능SQL 예시
속성 추가ALTER TABLE 테이블명 ADD COLUMN 새로운속성명 타입;
속성 수정ALTER TABLE 테이블명 MODIFY COLUMN 수정할속성명 타입;
속성명 변경ALTER TABLE 테이블명 CHANGE COLUMN 수정할속성명 새로운속성명 타입;
속성 삭제ALTER TABLE 테이블명 DROP COLUMN 삭제할속성명;
테이블 속성 조회SHOW COLUMNS FROM 테이블명;
제약조건 추가ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건;
제약조건 삭제ALTER TABLE 테이블명 DROP PRIMARY KEY;
ALTER TABLE 테이블명 DROP FOREIGN KEY FK명;
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
제약조건 조회SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

정리 요약

  • @Mapper는 인터페이스에 반드시 선언
  • SQL은 어노테이션 또는 XML 방식으로 관리 가능
  • #{}는 MyBatis의 안전한 파라미터 바인딩 방식
  • schema.sql, data.sql은 개발 단계에서 자동 실행 가능
  • DDL 수정 시 ALTER TABLE 구문 사용

0개의 댓글