MyBatis 환경 설정(application.properties, build.gradle)

Violet_Evgadn·2023년 4월 23일
0

DB연동

목록 보기
5/22

Gradle에 의존성 추가

build.gradle의 dependencies 위치에 2개의 의존성만 추가해주면 된다.

implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
implementation "mysql:mysql-connector-java:5.1.44"

application.properties 설정

MyBatis 같은 경우 "DB"를 활용하기 위한 기술이다 보니 일단 어떤 DB를 활용할 것인지 지정해줘야 한다.

(DB 설치 및 활용 방법 같은 경우 나중에 포스팅하도록 하겠다)

이후 application.properties에 "어디에 Mapper가 위치해있는가"에 대한 정보를 입력해 줄 필요가 존재한다.

Mapper Interface 입장에서 매칭 될 Mapper File 위치를 알아야 Query문을 연결시킬 수 있기 때문이다.

추가해야 할 application.properties 내용은 아래와 같다.

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/database
spring.datasource.username=root
spring.datasource.password=root

mybatis.type-aliases-package=egovframework.com.review.mapper
mybatis.mapper-locations=mybatis/mapper/**/*.xml

spring.datasource

내가 연결할 DB에 대한 정보를 전달하는 것이다.

  • spring.datasourec.driver-name : 연결할 DB 종류
    • MySQL : com.mysql.jdbc.Driver
    • MariaDB : org.mariadb.jdbc.Driver
      • MariaDB 자체의 Driver로 설정하면 에러가 발생하는 경우가 생길 수도 있음
      • MySQL Driver로 설정해도 MariaDB를 활용할 수 있으므로 범용성과 안정성을 위해 com.mysql.jdbc.Driver 활용을 추천
    • Oracle : oracle.jdbc.driver.OracleDriver
      • Oracle은 MySQL과 연동이 되지 않으므로 무조건 해당 Driver를 활용해야 함
  • spring.datasource.jdbc-url : 활용할 DB 경로
    • 여기서 중요한 점이 'spring.datasource.url'이 아닌 'spring.datasource.jdbc-url'로써 "jdbc-url"을 활용해야 한다는 점이다. 만약 이렇게 설정하지 않는다면 "jdbcUrl is required with driverClassName."이라는 에러가 발생한다.

jdbc:{사용할 DB 종류}://{IP 주소}:{DB Port}/{사용할 DB 이름}

  • DB 종류 : Mysql일 경우 mysql, Oracle일 경우 oracle:thin
  • spring.datasource.username : DB 사용자
  • spring.datasource.password : DB 암호

mybatis

mybatis.type-aliases-package

지정한 패키지의 "하위에" 존재하는 모든 Mapper Interface를 찾아주는 역할이다.

지정한 패키지 기준 하위에 존재하는 모든 파일을 찾다 보니 같은 이름의 파일이 2개 존재할 경우 에러가 발생할 수 있다.

물론 모든 클래스 이름을 다르게 하는 게 1순위지만(사실 이렇게 코드를 짜야한다. 똑같은 이름이 다른 패키지에 존재해버리면 프로그램이 너무 복잡해진다) @Alias 어노테이션을 활용해 같은 클래스 이름이라도 다르게 활용할 수 있다

mybatis.mapper-locations

"어떤 경로에 Mapper Interface와 대응되는 파일이 존재하는가"를 명시해주는 설정값이다.

Spring Web Project 기준 resources 경로를 시작으로 파일을 찾게 된다. 위 설정값을 보면 mybatis/mapper/*/.xml으로 값이 설정되어 있는데, 이 의미를 하나씩 뜯어보자.

  1. mybatis : resource/mybatis 패키지로 가라

  2. mapper : resources/mybaatis/mapper 패키지로 가라

  3. ** : *은 패키지 아래에 있는 모든 파일이 올 수 있음을 의미하고 **은 패키지 아래 있는 모든 파일 및 폴더를 통틀어 의미한다. 즉, **을 입력했으므로 모든 파일과 "폴더에 존재하는 모든 하위 폴더 및 파일"까지 포함한다는 의미이며, 이는 지정한 패키지에 속하는 모든 파일들을 의미한다. 즉 resouces/mybaits/mapper Depth와 관계없이 패키지에 속한 모든 파일들에 적용된다는 것이다.

  4. *.xml : resources/mybatis/mapper 패키지와 그 하위에 존재하는 모든 파일들 중 .xml이라는 확장자를 가진 파일만 Mapping File로 인지한다는 것이다.(즉 이 XML 확장자를 가진 파일에 존재하는 Query문만 활용할 수 있음)

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글