5. 마이바티스 기초
마이바티스의 기본적인 개념과 사용 방법에 대해 다룹니다. 마이바티스는 자바 개발자들이 데이터베이스와 상호 작용할 수 있도록 해주는 프레임워크입니다. 이번 섹션에서는 마이바티스의 주요 구성 요소인 매퍼, 쿼리, 결과 매핑 등에 대해 다룹니다. 또한, 마이바티스의 기본적인 설정 방법과 함께 예제를 통해 마이바티스를 사용하는 방법을 익힐 수 있습니다. 이를 통해 마이바티스를 사용하여 데이터베이스와 상호 작용하는 방법에 대한 이해를 높일 수 있으며, 이후 섹션에서 다룰 스프링 부트와 마이바티스를 함께 사용하는 방법의 기반이 됩니다.
5.1. 마이바티스 설정 파일 작성
5.1.1. mybatis-config.xml 작성
마이바티스 설정 파일인 mybatis-config.xml을 작성하여 마이바티스의 전반적인 설정을 관리할 수 있습니다. 보통 프로젝트의 src/main/resources 디렉토리에 위치시킵니다. 기본 구조는 아래와 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 설정 옵션들을 여기에 추가 -->
</configuration>
5.1.2. 마이바티스 설정 파일 위치 지정
스프링 부트에서 마이바티스 설정 파일을 사용하려면, 해당 파일의 위치를 지정해주어야 합니다. application.properties 또는 application.yml 파일에 아래와 같이 설정해 줍니다.
'application.properties'
mybatis.config-location=classpath:mybatis-config.xml
application.yml
mybatis:
config-location: classpath:mybatis-config.xml
이제 마이바티스 설정 파일이 스프링 부트와 연동되었습니다. 설정 파일에 필요한 설정 옵션들을 추가하여 마이바티스의 동작을 구성할 수 있습니다.
5.2. SQL 매퍼 작성
5.2.1. XML 기반 매퍼 작성
XML 기반 매퍼는 SQL 쿼리와 결과 매핑 설정을 XML 파일에 작성합니다. 파일명은 [매퍼명]Mapper.xml 형식으로 작성하며, 보통 src/main/resources/mapper 디렉토리에 위치시킵니다. 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">
<mapper namespace="com.example.mapper.매퍼명">
<!-- SQL 매핑 정의 -->
</mapper>
5.2.2. 인터페이스 기반 매퍼 작성
인터페이스 기반 매퍼는 SQL 쿼리와 결과 매핑 설정을 자바 인터페이스에 작성합니다. 인터페이스에는 MyBatis 어노테이션을 사용하여 SQL 쿼리를 정의하며, 보통 src/main/java/com/example/mapper 디렉토리에 위치시킵니다.
예를 들어, UserMapper 인터페이스를 작성하는 경우 아래와 같이 정의할 수 있습니다.
package com.example.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import com.example.domain.User;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(int id);
}
SQL 매퍼를 작성하여 마이바티스와 데이터베이스 간의 쿼리 실행 및 결과 매핑을 구성할 수 있습니다. XML 기반과 인터페이스 기반 중 프로젝트 요구 사항과 개발 스타일에 따라 적절한 방식을 선택하여 사용하면 됩니다.
5.3. 마이바티스 어노테이션 사용
5.3.1. @Select, @Insert, @Update, @Delete
MyBatis는 인터페이스 기반 매퍼에서 어노테이션을 사용하여 SQL 쿼리를 작성할 수 있습니다. 대표적인 어노테이션으로는 @Select, @Insert, @Update, @Delete가 있습니다.
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(int id);
@Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})")
int insertUser(User user);
@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
int updateUser(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUser(int id);
}
5.3.2. @Results, @ResultMap
@Results와 @ResultMap 어노테이션을 사용하여 데이터베이스 컬럼과 도메인 객체의 속성 간 매핑을 설정할 수 있습니다.
@Results는 여러 개의 @Result를 묶어서 한 번에 컬럼-속성 매핑을 정의합니다.
@Select("SELECT id, name, age FROM user WHERE id = #{id}")
@Results({
@Result(column = "id", property = "id"),
@Result(column = "name", property = "name"),
@Result(column = "age", property = "age")
})
User findById(int id);
@ResultMap은 별도의 XML 파일에 정의된 resultMap을 참조하여 매핑 설정을 가져옵니다. 아래 예제에서는 userResultMap이라는 resultMap을 참조합니다.
<!-- mybatis-config.xml -->
<resultMap id="userResultMap" type="com.example.domain.User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
@Select("SELECT id, name, age FROM user WHERE id = #{id}")
@ResultMap("userResultMap")
User findById(int id);
마이바티스 어노테이션을 사용하여 인터페이스 기반 매퍼에서 SQL 쿼리와 컬럼-속성 매핑을 설정할 수 있습니다. 어노테이션을 사용하면 코드가 간결해지고, 개발 과정에서 타입 체크와 같은 컴파일 타임 검사를 받을 수 있습니다.
'GD's IT Lectures : 기초부터 시리즈 > 스프링 부트(Spring Boot) & 마이바티스(Mybatis) 연동' 카테고리의 다른 글
[스프링 부트(Spring Boot) & 마이바티스(Mybatis) 연동] CRUD 애플리케이션 예제 (0) | 2023.05.07 |
---|---|
[스프링 부트(Spring Boot) & 마이바티스(Mybatis) 연동] 마이바티스와 스프링 부트 연동 (1) | 2023.05.07 |
[스프링 부트(Spring Boot) & 마이바티스(Mybatis) 연동] 데이터베이스 설정 (0) | 2023.05.06 |
[스프링 부트(Spring Boot) & 마이바티스(Mybatis) 연동] 스프링 부트 기초 (0) | 2023.05.06 |
[스프링 부트(Spring Boot) & 마이바티스(Mybatis) 연동] 개발 환경 설정 (0) | 2023.05.06 |
댓글