2025년 10월 13일 월요일 (91일차)

Jeonghoon·2025년 10월 13일

jeonghoon's Study

목록 보기
94/128

Spring & MyBatis 초기 설정 정리


🌱 Spring 서버 실행 시 초기 SQL 실행

Spring 서버를 실행할 때마다 초기 SQL을 자동으로 실행해 DB 스키마 및 초기 데이터 세팅을 할 수 있습니다. (주로 개발 단계에서 사용)

설정 속성

속성설명예시
spring.sql.init.mode초기 SQL 실행 모드 설정always : 사용 / never : 미사용(또는 생략)
spring.sql.init.schema-locationsDDL(SQL 스키마) 파일 경로classpath:/sql/schema.sql
spring.sql.init.data-locationsDML(SQL 데이터) 파일 경로classpath:/sql/data.sql

👉 classpath: 프로젝트 내 resources 폴더를 의미합니다.

예시 설정

spring.sql.init.mode=always
spring.sql.init.schema-locations=classpath:/sql/schema.sql
spring.sql.init.data-locations=classpath:/sql/data.sql

주의사항

  1. 데이터베이스 생성 및 삭제 불가능
    → Java 코드로 직접 작성해야 함.
  2. 테이블 DROP 시 주의
    → 참조(외래키) 테이블을 먼저 삭제해야 함.

💾 MyBatis 설정

MyBatis는 SQL과 Java 객체를 매핑(Mapping)해 쉽게 데이터베이스를 사용할 수 있도록 도와주는 프레임워크입니다.

Java에서 MyBatis 사용하는 방법

작성 방식설명
어노테이션 기반추상 메서드에 직접 SQL을 작성 (간단한 CRUD용)
XML 기반별도의 Mapper XML 파일에 SQL 작성 (복잡한 SQL, 동적 쿼리용)

🧩 XML 설정

XML은 데이터를 저장, 전달, 교환하기 위한 마크업 언어입니다.

Mapper XML 파일 경로 지정

mybatis.mapper-locations=classpath:/mapper/*.xml

(*은 해당 폴더 내 모든 XML 파일을 의미)

Mapper 인터페이스 매핑 설정

<mapper namespace="example.day13.XmlMapper">
	<!-- 여기 내부에 SQL(DML) 작성 -->
</mapper>

예시: INSERT 문

<insert id="추상메소드명" 
        parameterType="매개변수경로 || 타입명(생략 가능)"
        resultType="반환타입경로 || 타입명(생략 가능)"
        useGeneratedKeys="true" keyProperty="PK컬럼명">
    <!-- SQL 작성 -->
</insert>

설명:

  • useGeneratedKeys="true": 자동 생성된 PK 값을 DTO에 저장해 반환
  • 삽입/수정/삭제 메서드의 int 반환값은 실행된 레코드 수

⚙️ 동적 쿼리 (Dynamic SQL)

복잡한 조건문이나 반복문을 SQL에 적용할 때 동적 쿼리를 사용합니다.

작성 방법

구분설명예시
어노테이션 방식@Select, @Insert 등 안에 <script> 사용<script> ... </script>
XML 방식XML 내부에서 SQL 작성<if>, <foreach> 활용

주요 태그 예시

<if test="조건문">
	<!-- test의 조건이 참일 경우 실행될 SQL -->
</if>

<foreach collection="컬렉션명" item="반복변수명" separator=",">
	<!-- 반복 실행될 SQL -->
</foreach>

0개의 댓글