Step-by-Step

[Spring] 5. Mapper.java와 Mapper.xml 작성 본문

프로젝트/Eggo (Mobile App)

[Spring] 5. Mapper.java와 Mapper.xml 작성

희주(KHJ) 2022. 4. 26. 22:13

처음 프로젝트를 생성할 때 Spring 개념만 잡고 바로 뛰어들었더니

필요해보이는 기능들을 다 넣었는데, Mapper 인터페이스와 DAO 인터페이스 둘 다 생성해놓았다

이후 Mapper 중심으로 개발하다보니 DAO 인터페이스는 사용하지 않게 되었다

 

내가 선택한 프로젝트 구조는

Controller → Service → Mapper.java → Mapper.xml → DB

이다.

 

Mapper Interface

- Mybatis Mapping XML에 기재된 SQL을 호출하기 위한 인터페이스

- Mapping 파일에 있는 SQL을 자바 인터페이스를 통해 호출할 수 있도록 해줌

- Mapper Interface는 개발자가 직접 작성

- Mapper namespace는 패키지 명을 포함한 인터페이스 명으로 작성

- Mybatis3.0 부터 생성

 

DAO

- Database의 데이터에 접근하는 트랜잭션 객체

- 효율적인 커넥션 관리와 보안성 , 저수준 로직 , 고급 비즈니스 로직 분리

- Domain 로직으로부터 DB 관련 mechanism 숨김

- 인터페이스 + 구현 클래스로 구성

- sqlSession을 등록해야 함

- selectOne, insert, delete 등 제공하는 메소드 사용

- 문자열로 작성하기 때문에 버그 생성 가능성 있음

 

사용법

- Mapper.xml에 Mapper.java 인터페이스의 경로를 넣어준다

- Mapper.java의 메소드 명을 Mapper.xml의 해당 SQL문의 id로 넣어준다

@Mapper
public interface UserMapper {
	public void insertUser(UserDTO userDTO);
    	public List<String> FindUserId(String Email);
}
<?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="com.energysolution.mapper.UserMapper">
	
	<insert id="insertUser">
		INSERT INTO User(UserId, Name, Password, Email) VALUES (#{UserId},#{Name},#{Password},#{Email})
	</insert>
    
	<select id="FindUserId" parameterType="String" resultType="String">
		SELECT UserId FROM User WHERE Email=#{Email}
	</select>
</mapper>

- 나는 UserDTO의 필드값인 UserId, Name, Password, Email을 받아 데이터베이스에 Insert 했다

- 참고로 여기서 값을 나타낼때는 #{ } 로 감싸줘야 하고, 테이블명이나 필드를 나타낼땐 ${ } 로 한다

- SELECT 문의 결과값은 LIST로 받아서 return 한다

 

 

 

/////////

직접 SQL문 작성하는게 관리하기 더 편해보여서 MyBatis를 사용했는데,

나중에 인터넷 쳐보니 요즘은 MyBatis와 JPA을 같이 사용하는걸 더 권장하고 전세계적으로 많이 사용한다고 한다.

일단 MyBatis를 이용하여 구현하였으니, 다음에는 JPA로... !

 

 

 

 

[참조]

https://twofootdog.github.io/Spring-DAO%EC%99%80-Mapper%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90/

Comments