MyBatis 설정하기

이건우·2025년 3월 4일

웹 프로그래밍

목록 보기
14/43

본 설정은 IntelliJ에서 MariaDB와의 연결을 설정합니다.

의존성 추가(pom.xml)

MyBatis 라이브러리, MyBatis보조 라이브러리, MariaDB JDBC 드라이버
3개의 의존성을 추가합니다.

    <!-- MyBatis-Spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.7</version>
    </dependency>

    <!-- MyBatis Core -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.14</version>
    </dependency>

    <!-- MariaDB JDBC Driver -->
    <dependency>
      <groupId>org.mariadb.jdbc</groupId>
      <artifactId>mariadb-java-client</artifactId>
      <version>3.1.4</version>
    </dependency>

DB 연결 설정

설정파일 등록 및 초기화(web.xml) 설정 추가

contextConfigLocation : 위치/root-context.xml을 설정파일로 등록.
ContextLoaderListener : 등록된 해당 파일을 읽어 설정 등록.

  <!-- Root Context (Spring 기본 설정) -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/springConfig/root-context.xml</param-value>
  </context-param>

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

DB 연결 설정파일 작성(root-context.xml)

context:component-scan : Service 파일 위치 지정 스캔
dataSource : MariaDB 연결 설정
sqlSessionFactory : MyBatis에서 SQL을 실행할 수 있도록 설정
+ MyBatis 설정 파일 위치 지정
+ MyBatis 파일 위치 지정**
sqlSessionTemplate : MyBatis의 SqlSession 관리
MapperScannerConfigurer : Mapper 파일 위치 지정 스캔

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">

    <!-- Component Scan (Service, Dao 스캔) -->
    <context:component-scan base-package="co.kr.myportfolio.service, co.kr.myportfolio.dao"/>

    <!-- 데이터소스 설정 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.mariadb.jdbc.Driver"/>
        <property name="url" value="jdbc:mariadb://localhost:3306/mydb"/>
        <property name="username" value="root"/>
        <property name="password" value="root1234"/>
    </bean>

    <!-- MyBatis SqlSessionFactory 설정 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mybatis/*.xml"/>
    </bean>

    <!-- MyBatis SqlSessionTemplate 설정 -->
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg ref="sqlSessionFactory"/>
    </bean>

    <!-- MyBatis Mapper 스캔 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="co.kr.myportfolio.dao"/>
    </bean>

</beans>

MyBatis 설정파일 작성

settings-mapUnderscoreToCamelCase : 테이블 컬럼명 자동 변환 ex) user_id -> userId
settings-logImpl : SQL 실행 로그 콘솔에 출력
typeAliases : 입력된 파일을 mapper.xml 파일에서 위치 없이 사용 가능

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <settings>
        <!-- 컬럼명 자동 변환 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- 로깅(Log) 설정 -->
        <setting name="logImpl" value="SLF4J"/>
    </settings>

    <!-- TypeAlias 설정 -->
    <typeAliases>
        <package name="co.kr.myportfolio.model"/>
    </typeAliases>

</configuration>

Mapper 파일 작성

mapper namespace : 해당 .xml 파일과 연결될 Mapper 인터페이스 지정

<?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="co.kr.myportfolio.mapper.UserMapper">

    <!-- 사용자 조회 (ID로 검색) -->
    <select id="getUserById" resultType="User" parameterType="int">
        SELECT * FROM User WHERE id = #{id};
    </select>

</mapper>

실행 확인

  • controller 메소드
    임의의 값으로 user 정보를 불러오도록 설정
@GetMapping("/")
    public String home(Model model) {
        User user = userService.getUserById(1);
        model.addAttribute("userId", user.getUserId());
        model.addAttribute("message", "Welcome to MyPortfolio!");
        return "index";
    }
  • 웹 화면
    user 정보를 성공적으로 불러 온 것을 확인 할 수 있습니다.
    (해당 정보는 미리 DB에 입력해 둔 정보임)
profile
새싹개발자

0개의 댓글