< DAO >
package com.ms.blog.repository;
import org.springframework.stereotype.Repository;
import com.ms.blog.dto.MemberDTO;
@Repository
public interface BlogRepository {
// 기존에 사용한 DAO와는 달리 interface로 사용한다.
// 하위 method가 호출되면 Mapper.xml에서 일치하는 id를 찾아 해당 Query를 실행한다.
public void select();
public void insert();
public void delete();
public void update(MemberDTO member);
}
< Mapper.xml >
<?xml version="1.0" encoding="UTF-8"?>
<!--
src/main/resources/mappers/member/에 DB Query작성을 위한 xml파일을 생성한다.(new -> spring bean configuration file)
-->
<!-- 하위 DOCTYPE은 Query tag들을 찾아오게끔 해준다. -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper tag
- DAO(repository)와 매칭이 되게끔 한다.
- namespace속성을 통해 DAO Class file명까지의 경로를 명시해준다.
-->
<mapper namespace = "com.ms.blog.repository.BlogRepository">
<!--
* CRUD 4가지의 명칭 그대로 태그로 사용이 가능하며 Query의 끝나는 부분에는 세미콜론을 명시하지 않는다.
* tag에 id는 DAO의 메서드와 동일하게 명시한다.
* DAO에서 method가 호출되는 순간 Mapper.xml로 찾아와 method와 id가 일치하는 tag를 찾아 실행한다.
* parameterType
: DAO class에서 id와 일치하는 method가 받고있는 매개변수의 자료형을 명시한다.
: DTO와 같은 원시/wrapper 자료형이 아닌 객체가 매개변수로 사용되고 있을 시에는 해당 경로를 명시한다.
: ex) com.ms.blog.dto.MemberDTO
* resultType
: DAO class에서 id와 일치하는 method가 반환하는 데이터의 자료형을 명시한다.
: 원시자료형이 아닌 wrapper class 자료형으로 명시해야 한다.
: ex) DAO method가 예를 들어 ArrayList<MemberDTO>를 반환한다면 resultType에는 MemberDTO의 경로만 명시한다.
: -> mybatis에서 알아서 ArrayList로 묶어서 보내주기 때문이다.
* 이외의 태그 내에 사용 가능한 where, if등 여러 속성들이 있다.
-->
<select id = "select" parameterType = "" resultType = "">
SELECT * FROM blog
</select>
<insert id = "insert">
INSERT INTO blog VALUES ('1', '2', '3')
</insert>
<delete id = "delete">
DELETE FROM blog WHERE id LIKE '%'||user||'%' <!-- mybatis에서의 문자열 + 연산은 ||로 명시한다. -->
</delete>
<update id = "update" parameterType = "MemberDTO">
UPDATE blog SET id = #{ id }, pw = #{ pw }, name = #{ name }
<!--
기존에 DAO에서 ?를 rs.get자료형()으로 통해 대입을 했다면 mybatis는 #{ 매개변수명 }을 통해 대입한다.
매개변수의 DTO 내에 맴버필드와 일치하게끔 하여 getter를 통한 데이터 참조가 아닌 변수명 만으로도 참조가 가능하다.
-->
</update>
</mapper>
'Spring > Legacy' 카테고리의 다른 글
AJAX & JSON (0) | 2022.10.26 |
---|---|
Spring <-> DB Connection (0) | 2022.10.25 |
Controller in Legacy Package (0) | 2022.10.18 |