💡 MyBatis는 Java 객체와 SQL 데이터베이스 사이의 매핑을 쉽게 해주는 퍼시스턴스 프레임워크이다. 이를 사용해 복잡한 JDBC 코드를 작성하지 않고도 DB 작업을 쉽게 수행하도록 해준다!
* jdbc : DB에 접근할 수 있도록 하는 API
** 퍼시스턴스(Persistence) 프레임워크란?
데이터의 영속성을 관리하는 기술을 구현한 소프트웨어 프레임워크
* 영속성 : 데이터가 생성된 이후에도 지속적으로 존재한다는 의미
DB나 파일 시스템 등에 데이터를 저장하고 관리하는 과정
ex. Hibernate, MyBatis, Spring Data JPA, .NET의 Entity Framework 등
<?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="@Mapper 클래스 경로">
<select id="selectAll : 메서드 명" parameterType="Entity 경로" resultType="egovMap">
</select>
<insert id="" parameterType="">
</insert>
</mapper>
namespace
: interface repository 클래스에 @Mapper 어노테이션을 통해 매핑된 파일@Mapper("ooo~mapper")
: '~~/~~/ooo~mapper' 와 같이 이름 지정 가능id
: List<Map<String, Object>> selectAll();
parameterType
: java 이하 (sql문의 파라미터로 사용될) entity 클래스 경로 기재
mapper-config.xml
- 파일에서 경로를 지정 한다// 매퍼 인터페이스
public interface UserMapper {
User getUserById(int userId);
}
매퍼 인터페이스의 매개변수를 SQL 쿼리의 파라미터로 직접 매핑 할 수 있다.
<!-- MyBatis 매퍼 XML -->
<select id="getUserById" parameterType="int" resultType="User">
SELECT * FROM users WHERE id = #{userId}
</select>
SQL 쿼리 결과를 Java 객체에 자동으로 매핑
<resultMap id="userResultMap" type="User">
<result property="id" column="user_id"/>
<result property="name" column="user_name"/>
<result property="email" column="user_email"/>
</resultMap>
<select id="getUserById" parameterType="int" resultMap="userResultMap">
SELECT user_id, user_name, user_email FROM users WHERE id = #{userId}
</select>
resultMap
을 정의하여 column
과 entity
의 필드를 매핑
xml
)<?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>
<!-- 데이터베이스 연결 정보 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
<property name="username" value="root" />
<property name="password" value="password" />
</dataSource>
</environment>
</environments>
<!-- 매퍼 설정 -->
<mappers>
<mapper resource="mapper/UserMapper.xml" />
<!-- 다른 매퍼들의 경로 또는 resource를 여기에 추가 -->
</mappers>
</configuration>