[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
위와동일한방식으로
변수이름 : CLASSPATH
변수값 : ;%JAVA_HOME%lib\tools.jar;
Path 값추가
Path 편집>변수값뒷부분에추가 : ;%JAVA_HOME%\bin;
Maven 설치
Maven 다운로드
http://maven.apache.org 에서메이븐최신버전을다운로드하여압축해제
압축해제위치 : C:\study\maven3.1
Maven 설정
C:\study\maven3.1\conf\setting.xml 파일을열어서라이브러리가저장될디렉토리지정 (경로의 \ 는 / 로변경해줘야함.)
C:/study/maven3.1/repository
tomcat7 다운로드및압축해제
브라우저를통해서http://tomcat.apache.org/에서버전에맞는톰캣 7 다운로드및압축해제
C:\study\tomcat7에압축해제하도록한다.
Eclipse 설치
Eclipse 다운로드
http://www.eclipse.org 에서다운로드하여압축해제 (Juno 버전다운로드함.)
압축해제디렉토리 : C:\study\eclipse
Eclipse STS (SpringSource Tool Suite) 설치
Eclipse 실행> Marketplace (워크스페이스 : C:\study\workspace)
SpringSource Tool Suite 검색하여버전에맞는플러그인설치(Juno)
Maven 플러그인설치
Eclipse 실행> Marketplace> Maven Integration for Eclipse 검색하여버전에맞는플러그인설치
Maven 설정
Window > Preferences > Maven > Installations
다운로드받은 maven 선택 (C:\study\maven3.1)
Window > Preferences > Maven > User Settings 경로확인
Eclipse 기타설정및확인
인코딩설정
Window > Preferences > General > Workspace
JAVA 버전
Mysql설치
오토셋(APM) 을이용하여Mysql설치
오토셋다운로드
http://autoset.net/xe/ 에서전체설치파일다운로드하여설치
오토셋설치
불필요한 CUBRID, XE 는제외.
오토셋설정
웹서버시작
시작됨
MySQL 시작
phpMyAdmin을이용해 spring 유저와 DB 생성
URL : http://127.0.0.1/phpmyadmin/index.php
root 비밀번호 :autoset
사용자, 데이터베이스, 테이블추가
Create database with same name and grant all privileges 옵션은
사용자이름과똑같은데이터베이스를만들고그데이터베이스의모든권한을사용자에게준다라는의미. (실행버튼클릭)
Spring 데이터베이스에 3개의필드를가진 USER 테이블을만든다. (실행버튼클릭)
필드명 (pk)User_id, name, address 추가. (저장버튼클릭)
테이블이정상적으로생성됨.
데이터삽입 (실행버튼클릭)
Spring + Mybatis프로젝트생성및설정
Spring 프로젝트생성
File > New > Project…
Spring > Spring Project > Next
Project name :MybatisSample
Templates : Spring MVC Project
Next;
com.blog.mybatissample> Finish
JAVA 버전문제해결
위와같은문제가발생할수있다.
JDK 버전을맞춰주면해결하면됨.
Project > Properties >
Pom.xml 에서의존성라이브러리추가.
방식 1 검색하여추가.
방식 2 소스에서추가.
먼저추가한 spring jdbc가보인다.
<!– spring jdbc–>주석은직접추가함.
mysql-connector-java 를넣는다.
<!–mysql –>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
검색을이용하여최신버전의의존성라이브러리추가된화면.
pom.xml 에서추가된라이브러리다운로드
pom.xml >마우스우클릭> Run As >2 Maven build
Clean install > Run
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 |
configuration.mybatis패키지에config.properties추가.
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 추가
<?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번줄에서에러가발생합니다.
userDao라는이름의 bean 객체의 class 인com.blog.mybatissample.dao.UserDaoImpl클래스가없기때문입니다.
Spring 에서 DAO 라는용어를자주사용합니다.
DAO(Data-Access-Object) 는데이터의접근가능한오브젝트입니다. 여기서데이터는주로데이터베이스를의미합니다.
스프링에서는일반적으로 DAO 인터페이스를만들고, 그인터페이스를구현한클래스를사용하여데이터접근을하는것같습니다.
UserDaoImpl에서Impl은아마도 implement(구현)의줄임말이겠죠.
따라서저에러를없애기위해UserDao인터페이스와UserDaoImpl클래스를생성해야합니다.
src/main/java 경로에com.blog.mybatissample.dao패키지를생성합니다.
com.blog.mybatissample.dao패키지에서UserDao인터페이스를만듭니다.
UserDao인터페이스를구현하는UserDaoImpl클래스를생성합니다.
여기까지생성하고다시 applicationContext-mybatis.xml 파일을보겠습니다.
아직도에러가사라지지않은게확인가능합니다.
에러메세지확인.
bean 객체가가지고있는 property sqlSession에대한 Setter 가없다는내용이네요.
다시UserDaoImpl클래스에가서다음소스를추가합니다.
sqlSession멤버변수와 Setter 메소드를만들었습니다.
applicationContext-mybatis.xml 의에러가사라졌습니다.
데이터베이스 User 테이블과매칭되는 DTO(VO) 클래스를만들겠습니다.
com.blog.mybatissample.dto패키지를만듭니다.
DTO 패키지에 User 클래스를생성하고다음과같이편집합니다.
Generate기능을이용하여 Getter/Setter 한번에추가
마우스우클릭> Source > Generate Getters and Setters…
여기서는필드의이름을테이블의 Column 이름과동일하게작성합니다.
이렇게하면추가적인설정없이mybatis에서테이블데이터를클래스로자동매핑시켜줍니다
UserDao인터페이스에selectAllUser메소드를추가합니다.
인터페이스에메소드를추가했기때문에인터페이스의구현하는UserDaoImpl에서에러가발생합니다.
selectAllUser메소드를구현합니다.
src/main/resource 에서sql.mybatis.mapper패키지에user.xml 을생성합니다
user.xml을편집합니다.
resultType에서 User DTO 클래스로반환한다고명시합니다.
결과반환시쿼리의결과가 User DTO 클래스형태로반환됩니다..
물론 DTO 클래스의필드는테이블의컬럼과이름이일치해야합니다.
(일치하지않을경우설정필요.)
DAO 에서요청하는파라미터값과 select id 값이동일해야함.(selectAllUser)
이제src/main/java 에서com.blog.mybatissample패키지에 HomeController.java 파일을삭제한후
controller 패키지와추가.
com.blog.mybatissample.controller패키지에HomeController를추가하여편집
1박스를보시면 @Resource 어노테이션은userDaoImpl과 bean 객체의userDao를연결해줍니다.
아래줄에UserDaoImpl클래스를정의되어있습니다.
2박스를보시면selectAllUser함수는 /selectAllUser주소로매핑되어있습니다.
UserDaoImpl을이용해유저의리스트를얻고그형태를 JSON 으로변경하여모델에추가합니다.
그리고mybatis.jsp보고렌더링하라고알려줍니다.
src/main/webapp/WEB-INF/views 경로에mybatis.jsp를생성합니다.
아래와같이mybatis.jsp를편집합니다.
프로젝트전체컴파일이되도록 Clean 한다
서버를추가한다.
tomcat7 경로는C:\study\tomcat7
브라우저를통해서확인.
http://localhost:8080/mybatissample/selectAllUser
출처및참고 |
http://springmvc.egloos.com/http://akj61300.blog.me
http://odysseymoon.tistory.com/ http://www.egovframe.go.kr/ http://mvnrepository.com/ |