MyBatis
- Java 객체와 SQL 사이의 자동 매핑 기능을 지원함으로써 JDBC를 보다 편하게 사용할 수 있도록하는 ORM 프레임워크
- JDBC의 대부분의 기능을 제공
- SQL문을 Mapper XML 파일에 따로 저장해 놓음으로써 프로그래밍 코드와 분리되어 있어 SQL문에 변경이 있을시 따로 자바 코드를 수정할 필요 X
- Mapper 인터페이스 파일(src/main/java)에 있는 메소드에 대한 자세한 설정을 Mapper.xml(src/main/resources)에 작성
- Mapper 인터페이스 파일에서 같은 이름의 메소드인데 입력받는 데이터 타입이 다른 경우 자동으로 오버로딩이 적용
- Mapper.xml에서 입력값을 쿼리문에 활용할때는 [#{컬럼명}] 형식을 이용
예시
Mapper.java (인터페이스)
package com.spring.mapper;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.spring.dto.Dept;
@Mapper
public interface DeptMapper {
// String - dname
public String getDnameByDeptno(int deptno);
// 객체 - Dept
public Dept getDeptByDeptno(int deptno);
// HashMap
public HashMap<String, Object> getDeptHashMap(int deptno);
// List
public List<Dept> getAllDepts();
// List - Map
public List<HashMap<String, Object>> getAllDeptsHashMap(); // 오버로딩 => 인자 X
public List<HashMap<String, Object>> getAllDeptsHashMap(int deptno); // 오버로딩 => 인자 O
// insert - Dept
public void insertDept(Dept dept);
}
Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.spring.mapper.DeptMapper">
<!-- Mapper에 있는 메소드에 관한 정보 -->
<select id="getDnameByDeptno" parameterType="_int" resultType="string">
SELECT dname FROM dept WHERE deptno = #{deptno};
</select>
<select id="getDeptByDeptno" resultMap="selectDeptMap">
SELECT deptno, dname, loc FROM dept WHERE deptno = #{deptno};
</select>
<select id="getDeptHashMap" resultMap="selectDeptHashMap">
SELECT deptno, dname, loc FROM dept WHERE deptno = #{deptno};
</select>
<!-- 반환 객체 타입 - Map -->
<resultMap type="com.spring.dto.Dept" id="selectDeptMap">
<result column="deptno" property="deptno" />
<result column="dname" property="dname" />
<result column="loc" property="loc" />
</resultMap>
<resultMap type="java.util.HashMap" id="selectDeptHashMap">
<result column="deptno" property="deptno" />
<result column="dname" property="dname" />
<result column="loc" property="loc" />
</resultMap>
<select id="getAllDepts" resultType="com.spring.dto.Dept">
SELECT deptno, dname, loc FROM dept;
</select>
<select id="getAllDeptsHashMap" resultType="java.util.HashMap">
SELECT deptno, dname, loc FROM dept;
<if test="deptno != null and deptno = ''">
WHERE deptno = #{deptno}
</if>
</select>
<insert id="insertDept" parameterType="com.spring.dto.Dept">
INSERT INTO dept (deptno, dname, loc) VALUES (#{deptno}, #{dname}, #{loc});
</insert>
</mapper>'빅데이터 부트캠프 > Spring Framework' 카테고리의 다른 글
| 빅데이터 부트캠프 92일차 (0) | 2022.11.16 |
|---|---|
| 빅데이터 부트캠프 91일차 (1) | 2022.11.15 |
| 빅데이터 부트캠프 90일차 (0) | 2022.11.14 |
댓글