티스토리 뷰

처음 하는 스프링(Spring), context 설정 및 Controller에 이어서.

처음 매핑하는 mybatis

1. DB 준비하기
mybatis로 DB를 매핑하기에 앞서, 매핑할 DB를 먼저 준비해보도록 하자. 필자는 MariaDB로 진행을 하려고 한다. 설치가 필요한 사람들은 처음 하는 데이터베이스(DB), MariaDB 설치하기를 참고하자.

테이블생성1
간단한 쿼리를 통해 Database 목록을 조회해보면 기본적으로 생성된 것들이 보인다.

테이블생성2
프로젝트에서 사용할 'againDB'라는 이름의 새로운 Database를 만들어주자.

테이블생성3
다시 Database 목록을 조회해보면 생성된 Database가 보인다.
만들어진 Database를 사용하기 위해 아래의 쿼리를 실행해주자.

1
use againDB;
cs

테이블생성4
mybatis와 DB가 잘 매핑되는지 만을 확인할 용도의 테이블을 하나 만들어주었다.

테이블생성5
마찬가지로 최소한의 조회만을 해보기 위해서 최소한의 값만을 넣어주었다.

2. mybatis 준비하기
이제 프로젝트에서 본격적으로 mybatis 관련 세팅을 시작하도록 하겠다.

projectview
이번 포스팅에서 사용할 파일들과 프로젝트 구조는 이렇다.
주요 특징으로는 각각의 관점에 맞게 파일을 분류한 것인데, db-context.xml과 disposable_sql.xml의 위치 정도만 신경 써주면 될 것 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.2.0</version>
</dependency>
cs

mybatis 관련 공통 라이브러리들을 추가해주기 위한 pom.xml 부분이다.
라이브러리 추가를 위한 dependency들은 dependencies 태그 사이에 아무 데나 추가해주면 적용이 된다.
MVNReposipory 웹사이트에서 각 버전에 맞는 dependency를 찾을 수 있다.

1
2
3
4
5
<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <version>2.2.5</version>
</dependency>
cs

다음으로 Database 연결을 위한 라이브러리를 추가할 차례이다.
MariaDB를 사용하므로 mariadb-java-client dependency를 추가했다.

(참고로 mybatis 라이브러리들은 버전에 따른 호환성 문제가 있는데, 이는 추후에 구체적으로 다뤄볼 예정이다.)

3. Spring 설정하기
준비가 된 mybatis를 사용하기 위한 설정을 할 차례이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
 
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="org.mariadb.jdbc.Driver" />
        <property name="url" value="jdbc:mariadb://localhost:3306/againDB" />
        <property name="username" value="root" />
        <property name="password" value="mymaria" />
    </bean>
 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:/mapper/**/**/*_sql.xml" />
    </bean>
 
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory" />
    </bean>
 
</beans>
cs

db-context.xml은 세 개의 스프링 빈으로 구성을 했다.
첫 번째는 dataSource 빈으로, 보이는 것처럼 DB에 연결하기 위한 정보를 설정하는 부분이다.
두 번째는 sqlSessionFactory 빈으로, dataSource에서 가져온 DB와 mybatis의 mapper를 연결해주는 부분이다.
마지막은 sqlSession 빈으로, 실제 코드에서 sqlSession을 대체할 역할을 하는 부분으로, 자세한 내용은 추후 다뤄볼 예정이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
    
    <!-- Root Context: defines shared resources visible to all other web components -->
    <context:component-scan base-package="com.first">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
    <import resource="db-context.xml"/>
    
</beans>
cs

DB 관련 자원은 root-context.xml에서 다룰 수 있도록 db-context.xml을 import 해주었다.

3. DB 매핑하기
이제 프로젝트에서 본격적으로 mapper, dao, service, controller를 만들어서 DB의 데이터를 호출해보도록 하자.
이번 포스팅에서 데이터의 흐름도 함께 정리를 하려고 했으나, 글이 너무 길어지는 관계로 이번 포스팅은 사진으로만 간단히 보여주고, 다음 포스팅에서 자세하게 정리하도록 하겠다.

mapper

dao

daoimpl

service

serviceimpl

컨트롤러

4. 결과 확인하기

결과
서버를 실행하고 버튼을 누르게 되면 Eclipse의 콘솔 창에 위와 같이 DB에 저장해 둔 데이터가 출력된다.
이로써 mybatis를 이용한 매핑을 간단하게 살펴봤다.

다음 포스팅에선 이번 포스팅에서 못 다 정리한 내용을 다루도록 하겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함