Dev.GA

[spring/게시판] #2 mybatis 연동하기 본문

Dev.Project/project1-spring게시판

[spring/게시판] #2 mybatis 연동하기

Dev.GA 2017. 11. 14. 01:30




개발환경

Server OS : Windows10

Language : JAVA 1.6

Framework : Spring 3.1.1

WEB Server : Apache 

WAS Server : Tomcat 7

build tool : maven 2.5.1

DB : MySQL 5.7.16

ORM : mybatis 3.2.7




2. mybatis 연동하기



spring에 mybatis를 연동하기 위하여 pom.xml에 dependency를 추가한다.

이번 spring 게시판 프로젝트는 가장 기본적인 개발환경을 맞추었기에 RDBMS로 MySQL을 사용하기로 했다.



POM.XML

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
32
<!-- spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>
        
        <!-- mysql to java connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.31</version>
        </dependency>
        
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.7</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        
        <!-- commons-dbcp -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

cs



위와 같이 추가하면 maven이 알아서 build 시켜준다.


2-1. DB Connection


프로젝트에 DB를 연결하기 위한 MySQL 설정 프로퍼티를 추가한다.

설정 프로퍼티 파일은 src/main/resources 경로아래 property 폴더를 생성하고 dbpool.properties 파일을 생성한다.



dbpool.properties

1
2
3
4
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/gaboard?useUnicode=yes&characterEncoding=UTF8&autoReconnect=true&autoReconnectForPools=true
jdbc.username=root
jdbc.password=mysql12#$
cs

DB드라이버, 경로정보, 계정정보를 입력한다.


2-2. mybatis 설정파일 생성하기



스프링에서 MySQL에 연결, 접속하기 위한 설정 파일을 추가한다.



mybatis 설정정보 파일을 src/main/resources/mybatis/config 경로를 만들어 추가한다.


mybatis-config.xml

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
 
<?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="cacheEnabled"              value="true"/>  
        <setting name="lazyLoadingEnabled"        value="false"/>  
        <setting name="multipleResultSetsEnabled" value="true"/>  
        <setting name="useColumnLabel"            value="true"/>  
        <setting name="useGeneratedKeys"          value="false"/>  
        <setting name="defaultExecutorType"      value="SIMPLE"/>  
        <setting name="defaultStatementTimeout"  value="25000"/>  
    </settings>
 
    <typeHandlers>
        <!--  java.sql.Timestamp 를 java.util.Date 형으로 반환 -->
        <typeHandler javaType="java.sql.Timestamp" handler="org.apache.ibatis.type.DateTypeHandler"/>
        <typeHandler javaType="java.sql.Time"      handler="org.apache.ibatis.type.DateTypeHandler"/>
        <typeHandler javaType="java.sql.Date"      handler="org.apache.ibatis.type.DateTypeHandler"/>
    </typeHandlers>
 
</configuration>
cs



다음으로 dbpool.properties 파일을 읽어 MySQL과 연동시켜줄 dbpool-context.xml 파일을 src/main/webapp/WEB-INF/spring/ 위치에 

다음과 같이 생성한다.


dbpool-context.xml

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?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:mybatis="http://mybatis.org/schema/mybatis-spring" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
    http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
    ">
        
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:/property/dbpool.properties</value>
                </list>
            </property
        </bean>
        
        <bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.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="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="configLocation"    value="classpath:/mybatis/config/mybatis-config.xml" />
            <property name="mapperLocations"    value="classpath:/mybatis/mapper/**/*_SQL.xml" />
        </bean>
        
        <!-- sqlSession -->
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
            <constructor-arg ref="sqlSessionFactory" />
        </bean>
</beans>
cs



mybatis 설정파일과 db connection을 위한 정보가 설정되면 spring과 mybatis은 아주 간단히 연결되었다.

dbpool-context.xml에서 dbpool.properties파일의 정보를 가지고 MySQL과 db connection을 맺으며, 

47번째 라인의 configLocation을 통해 mybatis 설정파일을 읽고,

48번째 라인의 mapperLocations를 통해 모든 맵퍼를 호출하도록 하였다.


이제 spring과 mybatis 연동을 위한 설정은 마무리가 되었으니, 간단한 테이블을 구성하여 데이터를 조회하여 연동이 성공적으로 되었는지 확인하려 했으나 다음 포스팅에서 하기로 하고

그전에 프로젝트 폴더 구조부터 재구성한다.





기존의 Hello world의 잔재를 제거하고 

com.ga 패키지 하위로 board, main, member 로 구성하였으며, common에는 공통 기능을 처리하는 부분이 들어갈 예정이다.

기본적으로 게시판, 메인 및 로그인, 회원 크게 3가지 기능이 들어간 게시판 프로젝트로 시작할 것이다.

가장 기본이 되는 기능부터 하나씩 차근차근 진행할 예정이다.(물론 예정..)


맵퍼와 view단 모두 위와 같이 분류하였다.




다음으로, 간단한 게시판(board) 테이블을 생성한다.


1
2
3
4
5
6
7
8
9
CREATE TABLE `board` (
  `code` INT(10NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(250DEFAULT NULL,
  `content` LONGTEXT,
  `writer` VARCHAR(50DEFAULT NULL,
  `reg_datetime` DATETIME DEFAULT NULL,
  PRIMARY KEY (`code`)
ENGINE=INNODB DEFAULT CHARSET=utf8mb4
 
cs


테이블 까지 생성을 했으면 다음 포스팅에서 게시판의 게시글을 등록, 조회, 수정, 삭제 등 게시판의 가장 기본적인 기능에 대하여 포스팅을 진행하도록 하겠다.

Comments