Home » Blog » [JAVA] Eclipse Maven Spring Mybatis 개발환경 세팅 및 프로젝트 생성 DB연동(MySQL)

[JAVA] Eclipse Maven Spring Mybatis 개발환경 세팅 및 프로젝트 생성 DB연동(MySQL)

[JAVA] Eclipse Maven Spring Mybatis 개발환경 세팅 및 프로젝트 생성 DB연동(MySQL)

JAVA 설치

JDK 설치

www.oracle.com 에서 Java SE Development Kit 7 버전을다운로드하여설치한다.

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

환경변수설정

제어판\모든제어판항목\시스템>고급시스템설정>고급탭>환경변수

JAVA_HOME

C:\Program Files\Java\jdk1.7.0_25

image

위와동일한방식으로

변수이름 : CLASSPATH

변수값 : ;%JAVA_HOME%lib\tools.jar;

Path 값추가

image

Path 편집>변수값뒷부분에추가 : ;%JAVA_HOME%\bin;

Maven 설치

Maven 다운로드

http://maven.apache.org 에서메이븐최신버전을다운로드하여압축해제

압축해제위치 : C:\study\maven3.1

Maven 설정

C:\study\maven3.1\conf\setting.xml 파일을열어서라이브러리가저장될디렉토리지정 (경로의 \ 는 / 로변경해줘야함.)

image

C:/study/maven3.1/repository

tomcat7 다운로드및압축해제

브라우저를통해서http://tomcat.apache.org/에서버전에맞는톰캣 7 다운로드및압축해제

image

C:\study\tomcat7에압축해제하도록한다.

Eclipse 설치

Eclipse 다운로드

http://www.eclipse.org 에서다운로드하여압축해제 (Juno 버전다운로드함.)

압축해제디렉토리 : C:\study\eclipse

Eclipse STS (SpringSource Tool Suite) 설치

Eclipse 실행> Marketplace (워크스페이스 : C:\study\workspace)

image

SpringSource Tool Suite 검색하여버전에맞는플러그인설치(Juno)

image

Maven 플러그인설치

Eclipse 실행> Marketplace> Maven Integration for Eclipse 검색하여버전에맞는플러그인설치

Maven 설정

image

Window > Preferences > Maven > Installations

image

다운로드받은 maven 선택 (C:\study\maven3.1)

image

Window > Preferences > Maven > User Settings 경로확인

Eclipse 기타설정및확인

인코딩설정

Window > Preferences > General > Workspace

image

JAVA 버전

image

image

Mysql설치

오토셋(APM) 을이용하여Mysql설치

오토셋다운로드

http://autoset.net/xe/ 에서전체설치파일다운로드하여설치

image

오토셋설치

image

image

image

image

image

불필요한 CUBRID, XE 는제외.

image

image

image

오토셋설정

image

웹서버시작

image

시작됨

image

MySQL 시작

image

phpMyAdmin을이용해 spring 유저와 DB 생성

image

image

URL : http://127.0.0.1/phpmyadmin/index.php

root 비밀번호 :autoset

사용자, 데이터베이스, 테이블추가

image

image

Create database with same name and grant all privileges 옵션은

사용자이름과똑같은데이터베이스를만들고그데이터베이스의모든권한을사용자에게준다라는의미. (실행버튼클릭)

image

Spring 데이터베이스에 3개의필드를가진 USER 테이블을만든다. (실행버튼클릭)

image

필드명 (pk)User_id, name, address 추가. (저장버튼클릭)

image

테이블이정상적으로생성됨.

image

데이터삽입 (실행버튼클릭)

Spring + Mybatis프로젝트생성및설정

Spring 프로젝트생성

.image

File > New > Project…

image

Spring > Spring Project > Next

image

Project name :MybatisSample

Templates : Spring MVC Project

Next;

image

com.blog.mybatissample> Finish

JAVA 버전문제해결

image

위와같은문제가발생할수있다.

JDK 버전을맞춰주면해결하면됨.

Project > Properties >

image

image

Pom.xml 에서의존성라이브러리추가.

방식 1 검색하여추가.

image

방식 2 소스에서추가.

image

먼저추가한 spring jdbc가보인다.

<!– spring jdbc–>주석은직접추가함.

mysql-connector-java 를넣는다.

<!–mysql –>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.26</version>

</dependency>

image

검색을이용하여최신버전의의존성라이브러리추가된화면.

pom.xml 에서추가된라이브러리다운로드

image

pom.xml >마우스우클릭> Run As >2 Maven build

image

Clean install > Run

image

Console 창에서메이븐빌드성공확인.

web.xml 수정

원본

<?xmlversion=“1.0”encoding=“UTF-8”?>

<web-appversion=“2.5”xmlns=“http://java.sun.com/xml/ns/javaee”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

<!– The definition of the Root Spring Container shared by all Servlets and Filters –>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/root-context.xml</param-value>

</context-param>

<!– Creates the Spring Container shared by all Servlets and Filters –>

<listener>

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

</listener>

<!– Processes application requests –>

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>appServlet</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

수정

<!– Processes application requests –>

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/spring/appServlet/servlet-context.xml

classpath:context/**/applicationContext*.xml

</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

설정및소스파일생성

Mybatis설정파일생성

src/main/resources에패키지추가

configuration.mybatiscontext

sql.mybatis.mapper

image

configuration.mybatis패키지에config.properties추가.

image

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/spring?autoReconnect=true

jdbc.username=spring

jdbc.password=12qw

DB 설정시의 id, pw 와맞춰준다.

context 패키지에 applicationContext-mybatis.xml 추가

image

<?xmlversion=“1.0”encoding=“UTF-8”?>

<beansxmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:aop=“http://www.springframework.org/schema/aop”

xmlns:tx=“http://www.springframework.org/schema/tx”

xsi:schemaLocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd”>

<beanid=“propertyPlaceholderConfigurer”

class=“org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>

<propertyname=“locations”>

<value>classpath:configuration/mybatis/config.properties</value>

</property>

</bean>

<beanid=“dataSource”class=“org.apache.commons.dbcp.BasicDataSource”

destroy-method=“close”>

<propertyname=“driverClassName”value=“${jdbc.driverClassName}”/>

<propertyname=“url”value=“${jdbc.url}”/>

<propertyname=“username”value=“${jdbc.username}”/>

<propertyname=“password”value=“${jdbc.password}”/>

</bean>

<!– http://groups.google.com/group/ksug/browse_thread/thread/766cd1fd8ba39c96 –>

<beanid=“sqlSessionFactory”class=“org.mybatis.spring.SqlSessionFactoryBean”>

<propertyname=“dataSource”ref=“dataSource”/>

<propertyname=“mapperLocations”value=“classpath*:sql/mybatis/mapper/**/*.xml”/>

</bean>

<beanid=“sqlSession”class=“org.mybatis.spring.SqlSessionTemplate”>

<constructor-argindex=“0”ref=“sqlSessionFactory”/>

</bean>

<beanid=“transactionManager”

class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>

<propertyname=“dataSource”ref=“dataSource”/>

</bean>

<beanid=“transactionTemplate”

class=“org.springframework.transaction.support.TransactionTemplate”>

<propertyname=“transactionManager”ref=“transactionManager”/>

</bean>

<beanid=“userDao”class=“com.blog.mybatissample.dao.UserDaoImpl”>

<propertyname=“sqlSession”ref=“sqlSession”/>

</bean>

</beans>

45번줄에서에러가발생합니다.

image

userDao라는이름의 bean 객체의 class 인com.blog.mybatissample.dao.UserDaoImpl클래스가없기때문입니다.

Spring 에서 DAO 라는용어를자주사용합니다.

DAO(Data-Access-Object) 는데이터의접근가능한오브젝트입니다. 여기서데이터는주로데이터베이스를의미합니다.

스프링에서는일반적으로 DAO 인터페이스를만들고, 그인터페이스를구현한클래스를사용하여데이터접근을하는것같습니다.

UserDaoImpl에서Impl은아마도 implement(구현)의줄임말이겠죠.

따라서저에러를없애기위해UserDao인터페이스와UserDaoImpl클래스를생성해야합니다.

image

src/main/java 경로에com.blog.mybatissample.dao패키지를생성합니다.

image

image

com.blog.mybatissample.dao패키지에서UserDao인터페이스를만듭니다.

image

image

image

image

UserDao인터페이스를구현하는UserDaoImpl클래스를생성합니다.

여기까지생성하고다시 applicationContext-mybatis.xml 파일을보겠습니다.

아직도에러가사라지지않은게확인가능합니다.

image

image

에러메세지확인.

bean 객체가가지고있는 property sqlSession에대한 Setter 가없다는내용이네요.

다시UserDaoImpl클래스에가서다음소스를추가합니다.

image

sqlSession멤버변수와 Setter 메소드를만들었습니다.

image

applicationContext-mybatis.xml 의에러가사라졌습니다.

데이터베이스 User 테이블과매칭되는 DTO(VO) 클래스를만들겠습니다.

com.blog.mybatissample.dto패키지를만듭니다.

image

image

DTO 패키지에 User 클래스를생성하고다음과같이편집합니다.

image

Generate기능을이용하여 Getter/Setter 한번에추가

image

마우스우클릭> Source > Generate Getters and Setters…

image

image

여기서는필드의이름을테이블의 Column 이름과동일하게작성합니다.

이렇게하면추가적인설정없이mybatis에서테이블데이터를클래스로자동매핑시켜줍니다

UserDao인터페이스에selectAllUser메소드를추가합니다.

image

인터페이스에메소드를추가했기때문에인터페이스의구현하는UserDaoImpl에서에러가발생합니다.

image

selectAllUser메소드를구현합니다.

image

src/main/resource 에서sql.mybatis.mapper패키지에user.xml 을생성합니다

image

user.xml을편집합니다.

image

resultType에서 User DTO 클래스로반환한다고명시합니다.

결과반환시쿼리의결과가 User DTO 클래스형태로반환됩니다..

물론 DTO 클래스의필드는테이블의컬럼과이름이일치해야합니다.

(일치하지않을경우설정필요.)

DAO 에서요청하는파라미터값과 select id 값이동일해야함.(selectAllUser)

이제src/main/java 에서com.blog.mybatissample패키지에 HomeController.java 파일을삭제한후

controller 패키지와추가.

com.blog.mybatissample.controller패키지에HomeController를추가하여편집

image

image

1박스를보시면 @Resource 어노테이션은userDaoImpl과 bean 객체의userDao를연결해줍니다.

아래줄에UserDaoImpl클래스를정의되어있습니다.

2박스를보시면selectAllUser함수는 /selectAllUser주소로매핑되어있습니다.

UserDaoImpl을이용해유저의리스트를얻고그형태를 JSON 으로변경하여모델에추가합니다.

그리고mybatis.jsp보고렌더링하라고알려줍니다.

src/main/webapp/WEB-INF/views 경로에mybatis.jsp를생성합니다.

image

아래와같이mybatis.jsp를편집합니다.

image

프로젝트전체컴파일이되도록 Clean 한다

image

http://tomcat.apache.org/

서버를추가한다.

image

image

image

tomcat7 경로는C:\study\tomcat7

image

브라우저를통해서확인.

http://localhost:8080/mybatissample/selectAllUser

image

출처및참고
http://springmvc.egloos.com/http://akj61300.blog.me

http://odysseymoon.tistory.com/

http://www.egovframe.go.kr/

http://mvnrepository.com/