공부 자료/Spring

[SpringBoot] SpringBoot에서 Mybatis/Database 사용을 위한 설정

희희웃는청바지 2023. 11. 10. 00:58
SpringBoot에서 Mybatis와 Database를
사용하기 위한 설정

 

 

 

이전에 블로깅 했던 내용에서는 Spring Framework에서 mybatis 및 Database를 사용하기 위해

pom.xml에서 dependency 설정을 추가하고, servlet-context.xml에서 Mybatis와 Database를 설정해 주었다.

 

이제는 이를 Spring Boot에서 사용할 때 어떻게 설정해야 하는지 남겨보고자 한다.

 

pom.xml에서 설정해 두었던 dependency는 build.gradle에서

servlet-context.xml에서 설정한 Mybatis와 Database 설정은 application.properties에서 설정하면 된다.

 

두 코드 모두 아래에 작성했으며, 비교해서 보았을 때 크게 다르지 않음을 알 수 있으며,

그렇기에 이해하는데 어려움은 없을 것이다!


 

[pom.xml]

<!-- MariaDB -->
    <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
    <dependency>
      <groupId>org.mariadb.jdbc</groupId>
      <artifactId>mariadb-java-client</artifactId>
      <version>3.1.0</version>
    </dependency>

    <!-- MyBatis -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

    <!-- MyBatis Spring -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>

 

 

[build.gradle]

dependencies {
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1'
    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
}

 

 


 

[servlet-context.xml]

 <!--Springframework(spring jdbc)에서 제공해주는 데이터 소스-->
     <beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
         <!-- 속성이 4개 존재, setter 함수가 존재 >> property 사용 -->
         <!-- DB 사용을 위한 설정 진행 -->
         <beans:property name="driverClassName" value="org.mariadb.jdbc.Driver"/>
         <beans:property name="url" value="jdbc:mariadb://localhost:3306/testdb"/>
         <beans:property name="username" value="root"/>
         <beans:property name="password" value="admin1234"/>
     </beans:bean>

     <beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 2개의 속성이 존재
         매퍼의 위치를 알려줌-->
        <beans:property name="dataSource" ref="dataSource"/>
        <!--sql 경로 설정-->
        <beans:property name="mapperLocations">
            <beans:list><beans:value>classpath*:mapper/*.xml</beans:value></beans:list>
        </beans:property>
        <!--dto 경로 설정-->
        <beans:property name="typeAliasesPackage" value="com.kosta.socialLogin.dto"/>
    </beans:bean>

 

 

[application.properties]

# database
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/testdb
spring.datasource.username=root
spring.datasource.password=admin1234

#mybatis
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.kosta.bank.dto

 

- mybatis.mapper-locations : MyBatis 매퍼 XML 파일의 위치를 지정

- mybatis.type-aliases-package : MyBatis가 Java 도메인(엔터티 = dto) 클래스를 찾기 위해 검색할 패키지 지정

 

- driver-class-name / url은 아래 블로깅 참고

2023.11.10 - [공부 자료/Spring] - [Spring Boot] driver-class-name / url 이해하기

 

[Spring Boot] driver-class-name / url 이해하기

Spring Boot에서 데이터베이스 연동을 위해 사용하는 spring.datasource.driver-class-name, spring.datasource.url 이해하기 SpringBoot 프로젝트를 설정하고 데이터베이스를 연결하는데, 바인딩을 하지 못한다는 에

kcode-recording.tistory.com

 


 

추가적으로 mybatis에서 mapper를 작성해서 사용할 때 변경되어야 하는 사항이 하나 있는데,이는 바로 mapper의 namespace이다. Spring Boot에서는 dao와 연결해서 사용함으로서 daoImpl을 따로 만들어 사용하지 않기 때문에

(즉, sqlSessionTemplate을 사용하지 않기 때문에) dao에서 바로 mapper를 사용하게 된다.

이를 위해 mapper의 namespace를 dao 클래스와 연결해주면 된다.

 // SpringFramework
 <mapper namespace="mapper.account">
 
 // SpringBoot
 <mapper namespace="com.kosta.bank.dao.AccountDao">

 

 

 

설정해야 하는 코드의 형식만 조금 바뀌었을 뿐 내용은 동일한 것을 볼 수 있다.

build.gradle에서 사용하고자 하는 것이 있다면 추가적으로 dependency를 추가하면 된다!