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
복사했습니다!