본문 바로가기
SpringBoot

[Spring Boot] 05. MyBatis Basic Full Test

by 청양호박이 2019. 11. 10.

이번에는 앞의 DB Connection Pool과 병행하여, 설정이 잘 되었는지 기본 테스트를 진행해 보겠습니다. 가장 기본적인 API형태의 시작이며, 대부분 이 구조의 확장이나 기능의 추가라고 보시면 됩니다. 우선 이전 블로그에서 MVC를 설명하면서 폴더 구조를 봤었는데, 거기에 실질적으로 들어갈 파일을 생성해 줍니다.

2019/11/08 - [SpringBoot] - [Spring Boot] 03. MVC 구조

 

[Spring Boot] 03. MVC 구조

이번에는 실질적인 코딩보다는 실제로 Spring Boot를 활용한 Application을 제작할때의 구조에 대해서 알아볼까 합니다. 흔히 MVC구조라고 하는데, 이는 Model-View-Controller의 유기적인 구조입니다. 이는 데이..

ayoteralab.tistory.com

생성하는 파일의 종류와 모두 추가했을때, 구조는 아래와 같습니다.

  • UserController.java / UserService.java / UserMapper.java / UserMapper.xml / UserDTO.java

그럼 각 단계별로 작성되는 내용과 결과적인 모습을 확인해 보겠습니다.

 

1. UserController.java (Controller)


Annotation 추가 - @RestController / @RequestMapping

                           . Class위에 작성되는 RequestMapping은 사용자가 브라우저에서 작성하는 URL의 주소이후 Top

                             Level 로 보시면 됩니다. (ex. http://localhost:8080/user)

                      - @Autowired

                           . Class내에 작성되는 해당 Annotation은 MVC구조상 의존성이 있는 객체인 Service에 해당하는

                            클래스를 자동으로 추가해주는 역할을 합니다.

                      - @RequestMapping

                           . Class내에 작성되는 RequestMapping은 Top Level뒤에 하위 URL로 생각하시면 되고, 

                             GET / POST / PUT등 RequestMethod를 지정하게 됩니다.

 

그 이하 Select에 대한 method는 나중에 Controller에 대한 세부 브로그에 작성하도록 하겠습니다. 우선은 기본 구조만 확인해보고 따라하는 정도가 적당할 것 같습니다.

 

@RestController
@RequestMapping(value = "/user")
public class UserController {
	
	@Autowired
	UserService userService;
	
	@RequestMapping(value = "select", method = RequestMethod.GET)
	public ResponseEntity<ArrayList<UserDTO>> selectUser(){
		return ResponseEntity.ok(userService.selectUser());
	}

}

 

2. UserService.java (Service) 


Annotation 추가 - @Service / @Transaction

                           . 서비스의 기본 Annotation을 추가해줍니다.

                      - @Autowired

                           . Class내에 작성되는 해당 Annotation은 MVC구조상 의존성이 있는 객체인 Mapper에 해당하는

                            클래스를 자동으로 추가해주는 역할을 합니다.

 

현재는 따로 처리할 비즈니스 로직이 없기때문에, 그냥 Mapper를 통해서 받아온 값을 controller에 return해주기만 해줍니다.

 

@Service
@Transactional
public class UserService {
	
	@Autowired
	UserMapper userMapper;

	public ArrayList<UserDTO> selectUser() {
		return userMapper.selectUser();
	}

}

 

3. UserMapper.java (Mapper Interface)


우선 Class로 생성하지 않고, Interface로 생성해줍니다.

Annotation 추가 - @Mapper

                           . 서비스의 기본 Annotation을 추가해줍니다.

 

 

@Mapper
public interface UserMapper {

	ArrayList<UserDTO> selectUser();

}

 

4. UserMapper.xml (Mapper xml)


xml문서 기본 작성 - xml version과 encoding, DOCTYPE 부문

xml과 매핑되는 mapper.java의 namespace 작성 - "com.example.ayoteralab.main.mapper.UserMapper" 

SQL Query 작성

     - id는 mapper.java의 method명과 동일하게 하며, resultType은 DTO위치와 이름을 명기함

     - 실질적인 Query를 작성

 

<?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.example.ayoteralab.main.mapper.UserMapper">

<select id="selectUser" resultType="com.example.ayoteralab.main.dto.UserDTO">
<![CDATA[
	SELECT 
		*
	FROM USER
]]>
</select>

</mapper>

 

5. 결과 확인


정상적으로 DB의 User table의 전체 리스트를 받아왔습니다.

 

 

 

이제 기본적인 Rest API를 위한 Spring Boot의 기본적인 준비가 되었습니다. 이제 다음 블로그 부터는 세부적인 내용으로 작성해 보겠습니다. 

 

-Ayotera Lab-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글