3. MyBatis 설정

2020. 9. 27. 13:22·사이드 프로젝트/게시판
목차
  1. 설정
  2. DTO, Controller, Service, Mapper(Repository), XML

2020/09/27 - [사이드 프로젝트] - 2. Spring boot + MSSQL

 

2. Spring boot + MSSQL

< 이전글 > 2020/09/12 - [사이드 프로젝트/게시판] - 1. Spring boot 프로젝트 생성 1. Spring boot 프로젝트 생성 * 이클립스 마켓플레이스에서 spring을 설치 또는 아래의 주소에서 Spring Tool Suite를 먼저..

dev-yujji.tistory.com

 

 

프로젝트를 할 때 자바 퍼시스턴스 프레임워크로 MyBatis를 설정할지 JPA를 설정할지 결정할 수 있다.

 

둘의 차이점은 MyBatis는 쿼리를 XML 파일에서 직접 작성하고 JPA는 쿼리가 아닌 메소드를 이용해 데이터를 불러오게 된다는 큰 차이를 가지고 있다.

 

물론 JPA를 사용한다고 해서 쿼리를 직접 짜지 못하는 것은 아니지만! JPA는 MyBatis를 이용했을 때 로직보다도 쿼리에 더 집중된 현상을 보완했다는 것을 생각해보면 JPA를 사용해 직접 쿼리를 짠다는 건 의도에 어긋난다고 생각한다.

 

또한, JPA는 Union 같은 쿼리문을 사용할 수 없다고 한다. 따라서 복잡한 쿼리를 이용하는 경우 JPA 사용을 추천하지 않는다.

 

좌측이 MyBatis이고 우측이 JPA이다.

 

나는 게시판 만들기를 진행하며 MyBatis를 이용할 것이다.

 

 

 

설정


'pom.xml' 파일을 열고 MyBatis Dependency를 추가한다.

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.3</version>
</dependency>

 

그다음 'application.properties' 파일에 MyBatis와 관련된 설정 값들을 입력해준다.

mybatis.type-aliases-package=com.example.CommunityBoard
mybatis.mapper-locations=classpath:mapper/*.xml

○ type-aliases-package : 별칭 설정이다. DTO Class 파일이 들어간 상위 폴더 경로로 잡아주어도 된다. 

○ mapper-locations : 이름 그대로 매퍼 파일의 위치를 잡아준다. 'mapper/*.xml'의 뜻은 'resources' 폴더 밑의 'mapper' 폴더가 있고 그 안의 모든 이름의 파일이면서 확장자가 '.xml' 인 파일들을 의미한다.

 

Mapper 파일 위치

 

 

그리고 'application.java' 파일로 들어가 @MapperScan 어노테이션을 붙여주고 경로를 잡아준다.

해당 경로는 '@Mapper' 또는 '@Repository' 어노테이션이 붙은 파일이 있는 경로로 설정하면 된다.

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.example.CommunityBoard")
public class CommunityBoardApplication {

	public static void main(String[] args) {
		SpringApplication.run(CommunityBoardApplication.class, args);
	}

}

 

 

 

DTO, Controller, Service, Mapper(Repository), XML


 

 

1. Users DTO

@Getter
@Setter
@NoArgsConstructor
public class Users {
	private String userId;
	private String password;
	private String email;
	private String name;
	private String phoneNumber;
	private String address;
	private String role;
}

'@Getter', '@Setter', '@NoArgsConstructor'는 Lombok 라이브러리에서 제공해주는 어노테이션이다. 해당 어노테이션이 있으면 getter, setter 코드들은 작성하지 않아도 된다. '@NoArgsConstructor' 어노테이션은 생성자를 만들어주는데 본인은 Null 처리를 이 어노테이션 즉, 생성자를 이용하여 하기 때문에 작성해주었다.

 

2. JoinController

@Controller
@RequestMapping("/join")
public class JoinController {

	@Autowired
	JoinService joinService;
}

 

 

회원가입 부분을 만들기 위해 'JoinController'를 생성했다. 

 

3. JoinService

@Service
public class JoinService {

	@Autowired
	JoinMapper joinMapper;
}

 

4. JoinMapper

@Mapper
public interface JoinMapper {

}

 

5. JoinMapper.xml

<?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.CommunityBoard.join.mapper.JoinMapper">
	

</mapper>

 

이런 식으로 설정해주면 된다.

 

 

참고로 내가 설정한 프로젝트의 구조는 이렇다.

 

최근 회사에서 한 프로젝트 안에 JPA만을 사용하다가 복잡한 쿼리 사용으로 MyBatis를 같이 설정하는 일이 있었는데 그때 삽질 때문에 경로 잡는 문제를 생각해서 프로젝트 구조를 잘 나누어 주는 게 좋을 것 같다는 생각이다..

 

다음 포스팅은 Logback 설정에 대해서 포스팅하겠다.

'사이드 프로젝트 > 게시판' 카테고리의 다른 글

5. Controller에서 alert 띄우기, 화면 이동하기  (2) 2020.10.05
4. Logback 설정  (0) 2020.09.27
2. Spring boot + MSSQL  (1) 2020.09.27
1. Spring boot 프로젝트 생성  (0) 2020.09.12
  1. 설정
  2. DTO, Controller, Service, Mapper(Repository), XML
'사이드 프로젝트/게시판' 카테고리의 다른 글
  • 5. Controller에서 alert 띄우기, 화면 이동하기
  • 4. Logback 설정
  • 2. Spring boot + MSSQL
  • 1. Spring boot 프로젝트 생성
나는 유찌
나는 유찌
쩌리쨩
  • 나는 유찌
    유찌 개발 일기
    나는 유찌
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 사이드 프로젝트
        • 게시판
        • 블로그(Spring boot + React.js ..
      • 데이터베이스
        • SQLD
      • 이슈 해결
      • Front
        • Javascript
        • Vue.js
        • HTML+CSS
      • Backend
        • Spring
        • ORM
        • JAVA
      • 공부
        • HTTP
        • OOP
        • 이것저것
        • 코딩테스트 | 알고리즘
      • Computer Science
        • Computer architecture
        • 데이터베이스
        • 운영체제
      • 일상
        • 독서
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    refresh token
    독서
    Spring Security AccessDecisionManager
    웹 개발
    Kotlin AccessDecisionManager
    한국소설
    role scope
    Spring boot에서 JWT 구현
    Kotlin AntPathMatcher
    spring
    mysql 격리수준
    히가시노 게이고
    jwt 로그인 구현
    access token
    권한 scope 처리
    spring 격리수준
    AntPathMatcher
    Access Token Refresh Token
    redis 분산락
    DIRTY READ
    pessimisticlock
    Access token 재발급
    JWT이란?
    추리소설
    Spring Boot
    jwt
    LeetCode
    phantom read
    mssql
    AccessDecisionVoter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
나는 유찌
3. MyBatis 설정
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.