service측 -> 인터페이스
- 인터페이스의 모든 메소드는 묵시적으로 public abstract(추상메소드 == 미완성메소드)
인터페이스에 미완성 메소드 작성 후 , 인터페이스 implements하는 클래스 생성해줌
Dao 측 ->
-myBatis sqlSession에서 제공하는 메소드를 통해
sql문 찾아서 완성시킨 후 실행하고 결과 바로 받음
sqlSession.sql문 종류에 맞는 메소드(insert/update/delete..) ("매퍼파일별칭.sql문 고유 id", [sql문을 완성시킬 객체])
-> select문일경우 조회결과 한행일 때 selectOne/ 여러행 조회일 때 selectList
mapper -
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="해당 mapper파일만의 고유한 별칭">
<resultMap id="식별자" type="조회결과를 담아서 반환하고자하는 vo객체의 타입"> -> select문의 반환값이 객체일경우
<resultMap id="식별자" type="조회결과를 담아서 반환하고자하는 vo객체의 타입">
<result column="조회결과를 뽑을 DB컬럼명" property="결과를 담고자하는 vo의필드명" />
<result column="조회결과를 뽑을 DB컬럼명" property="결과를 담고자하는 vo의필드명" />
<result column="조회결과를 뽑을 DB컬럼명" property="결과를 담고자하는 vo의필드명" />
<result column="조회결과를 뽑을 DB컬럼명" property="결과를 담고자하는 vo의필드명" />
</resultMap>
* DML문일 경우
<insert|update|delete id=" 식별자" [parameterType="해당 sql에 전달되는 값의 타입(풀클래스명)|별칭"]>
=> 실행결과가 처리된 행수(int)이기 때문에 resultType또는 resultMap을 작성하지 않아도 됨
* select문일 경우
<select id="식별자" [parameterType="해당 sql에 전달되는 값의 타입(풀클래스명)|별칭"]
resultType = "조회결과를 반환하고자하는 자바 타입(int|String)" | resultMap="조회결과를 뽑아서 매핑시킬 resultMap의 id"
*공통적인 특징
? 대신에 해당 sql문에 전달된 객체|변수로부터 값을 꺼낼때 #{필드명}( 내부적으로getter메소드 수행) 또는 #{변수명}
HashMap으로 부터 값을 꺼낼때 #{키값}
</mapper>
'Framework > Mybatis' 카테고리의 다른 글
04. mybatis 페이징 처리 (0) | 2023.02.15 |
---|---|
03. mybatis filter 클래스 (0) | 2023.02.15 |
01. MyBatis 개요 및 세팅 (0) | 2023.02.13 |