프로필

프로필 사진
Popomon
Frontend Developer
(2020/12 ~)

    카테고리

    포스트

    [Backend/Spring] 7. 마이바티스 설정하기

    2021. 2. 18. 07:37

    꿈가게: To Do List - iOS

    꿈가게: To Do List - Android

    목차

    1. 이클립스에 스프링 개발환경 설치 후, 프로젝트 생성하기

    2. 톰캣 다운로드 후 이클립스에 불러오기

    3. 이클립스에서 톰캣으로 프로젝트 실행시키기

    4. 메이븐 패키지 설치 (pom.xml)

    5. root-context/servlet-context/web 설정파일 작성하기

    6. MySQL 설치하기

    7. 마이바티스 설정하기

    8. 스프링 시큐리티 설정하기

    9. 로그인/회원가입


    # mybatis-config.xml

    마이바티스 관련 설정 파일입니다. 카멜 케이스를 자동으로 매핑해주는 옵션을 추가해줍니다. 이것은 꼭 필요합니다!! 데이터 베이스의 컬럼명이 access_token 일 때, accessToken 변수에 자동으로 집어넣을 수 있는 옵션입니다.

     

    파일의 경로는 src/main/resources/config/mybatis-config.xml 입니다. config 패키지를 별도로 생성한 후 그 안에 파일을 생성해주세요.

     

    <?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" />
    	</settings>
    	<typeAliases>
    		<package name="com.study.testapp.model" />
    	</typeAliases>
    </configuration>

     


    # db.properties

    데이터베이스에 접속하기 위한 파일입니다. 해당하는 데이터베이스에 맞게 정보를 작성해주세요. 이전 포스팅에서는 마이에스큐엘을 설치하였기 때문에 저는 그대로 마이에스큐엘로 진행하겠습니다.

     

    이후 데이터베이스를 만들고 사용자를 추가해서 좀 더 복잡한 과정이 들어갈 수 있지만 지금은 root 계정으로 설치할 때 설정했던 비밀번호를 사용하여 접속정보를 작성하였습니다.

     

    파일의 경로는 src/main/resources/db.properties 입니다.

     

    db.driver=com.mysql.jdbc.Driver
    db.host=jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false
    db.username=root
    db.password=root

     


    # 사용자 테이블 생성하기

    MySQL 워크벤치에 접속해서 다음 쿼리를 입력하여 사용자 테이블을 생성합니다.

     

    use mysql;
    
    CREATE TABLE ACCOUNT (
        id varchar(100) primary key,
        password varchar(256),
        email varchar(100),
        phone varchar(20),
        role varchar(20)
    );

     


    # 사용자 쿼리파일 acount-mapper.xml

    위에서 만든 테이블에 관한 로그인/회원가입을 위한 2종류의 쿼리를 작성합니다. 가장 기본적인 쿼리이기 때문에 큰 부담없이 작성하실 수 있습니다.

     

    먼저 쿼리 파일과 함께 한쌍으로 필요한 매퍼 인터페이스 부터 작성해 보겠습니다.

    파일 경로는 com.study.testapp.account.mapper.AccountMapper.java 입니다.

     

    package com.study.testapp.account.mapper;
    
    import org.apache.ibatis.annotations.Mapper;
    
    import com.study.testapp.model.Account;
    
    @Mapper
    public interface AccountMapper {
      Account getAccountById(String id);
      void insertAccount(Account account);
    }
    

     

    이제 XML 파일을 만들고 함수명과 동일하게 id 값을 작성 후, 쿼리를 작성합니다. 완성된 파일은 아래에 나와있습니다.

    파일경로는 src/main/resources/mapper/account-mapper.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.study.testapp.account.mapper.AccountMapper">
    
        <!-- 로그인 -->
        <select id="getAccountById" parameterType="string" resultType="Account">
        	SELECT
              id
              , password
              , email
              , phone
              , role
            FROM ACCOUNT 
            WHERE id = #{id};
        </select>
    
        <!-- 회원가입 -->
        <insert id="insertAccount" parameterType="Account">
        	INSERT INTO ACCOUNT (
              id
              , password
              , email
              , phone
              , role
            ) VALUES (
              #{id}
              , #{password}
              , #{email}
              , #{phone}
              , 'ROLE_USER'
            )
        </insert>
    </mapper>

     


    # mybatis-context.xml

    이제 마이바티스에 관한 스프링 프레임워크 설정입니다. 이 파일을 생성하고 아래와 같은 내용으로 작성하시면 됩니다. config, mapper 경로와 basePackage 값, db.properties 파일의 위치 값을 잘 확인하고 넣어주세요.

     

    <?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"
           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">
    
        <context:property-placeholder location="classpath:db.properties"/>
    
        <bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName" value="${db.driver}"/>
            <property name="url" value="${db.host}"/>
            <property name="username" value="${db.username}"/>
            <property name="password" value="${db.password}"/>
        </bean>
    
        <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
            <constructor-arg ref="dataSourceSpied" />
            <property name="logFormatter">
                <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
                    <property name="loggingType" value="MULTI_LINE" />
                    <property name="sqlPrefix" value="SQL : "/>
                </bean>
            </property>
        </bean>
    
        <bean id="transactionManager"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
    
        <bean id="sqlSessionFactory"
              class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation" value="classpath:config/mybatis-config.xml" />
            <property name="mapperLocations" value="classpath:mapper/*.xml" />
        </bean>
    
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.study.testapp" />
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        </bean>
    </beans>

     


    # 결과 확인

    다음과 같이 파일이 잘 생성되었는지 확인해주세요.

     

     

     

    고생하셨습니다!!