이번장은 Spring3 + MyBatis 연동하여 DB에서 데이터 조회하는 테스트를 해보도록 하겠습니다.
MySQL JDBC를 이용하여 연동법을 설명하겠습니다.
Spring + Mybatis 연동을위한 pom.xml의 dependency를 등록해주세요
<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> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-framework.version}</version> </dependency>
DBMS 별로 라이브러리 연동법은 하단을 참고해주세요.
2014/11/14 - [개발에필요한연동법/스프링연동] - Spring3 Maven을 이용하여 pom.xml에 oracle,mysql,mssql jdbc 라이브러리 등록하기
/resources/spring/application-config.xml 파일
beans태그사이에 다음과 같이 코드추가 해주세요
<context:component-scan base-package="com.spring"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://아이피:포트/DB명" /> <property name="username" value="DB계정" /> <property name="password" value="DB패스워드" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath*:query/**" /> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean>
mapperLocations 속성값에 따라 다음과 같이 디렉토리를 생성해줍니다.
"/resources/query/"
디렉토리 생성이 완료되었으면
해당디렉토리에 "파일명.xml"을 생성하도록 합니다.
저는 임의로 "query.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="query"> <select id="test" resultType="String"> SELECT 'test' </select> </mapper>
이제는 DAO에대한 interface/class 파일을 생성해야하는데
저같은 경우는 패키지 + 파일을 하단처럼 생성하였습니다.
인터페이스는 생성하지 않고도 db연동은 가능하지만
대부분 생성하는 관계로 연결지어서 진행하겠습니다.
public interface StudyDao { public void test() throws SQLException; }
@Repository public class StudyDaoImpl implements StudyDao { @Autowired private SqlSession query; @Override public void test() throws SQLException { query.selectOne("query.test"); } }
위와 같이 선언해주시면 Spring + mybatis 연동은 끝난겁니다.
※ DAO 클래스에 @Repository 어노테이션을 필수로 작성해주셔야 합니다.
테스트를 위한 컨트롤러 코드를 작성해보도록 하겠습니다.
@Autowired private StudyDao studyDao;
StudyDao 인터페이스에 autowired 어노테이션을 선언합니다.
@RequestMapping("/test") public void test(){ try { studyDao.test(); } catch (Exception e) { e.printStackTrace(); } }
샘플 코드 작성이 완료 되었다면 한번 실행해보도록 하겠습니다.
상단 붉은색 네모친 부분이 이클립스의 콘솔부분입니다.
오류도 안나오고 어떠한 진행도 되지않아 동작이 되는지 확인이 되지 않습니다.
간단하게 DB로그를 출력해보고자 로그레벨을 변경해주도록 하겠습니다.
/resources/logback.xml 파일을 열어봅니다.
<root level="info"> <appender-ref ref="console"/> </root>
위와같은 태그가 존재할텐데 level값을 보시면 "info" 라고 되어있습니다
"info" -> "debug"로 레벨 변경을 해주도록 합니다
저장 후 재실행을 컨트롤러를 재호출 해보도록 하겠습니다.
정상적으로 query.xml에 정의한 쿼리문이 호출되고
결과값까지 출력되는것을 확인하였습니다.
다음 포스팅은 트랜잭션 설정에 대하여 포스팅 해보도록 하겠습니다.
by 개발로짜
Spring3 + Mybatis 여러개 Datasource 연동법(다중 트랜잭션 포함) (0) | 2014.11.16 |
---|---|
Spring3 + Mybatis연동에 추가로 트랜잭션 설정 하여 실패시 Rollback 처리하기 (2) | 2014.11.14 |
Spring3 Maven을 이용하여 pom.xml에 oracle,mysql,mssql jdbc 라이브러리 등록하기 (0) | 2014.11.14 |
Spring3 인터셉터와 세션을이용하여 로그인 처리해보기 (2) | 2014.11.12 |
Spring3 RedirectAttributes 사용한 redirect POST 전송법 (0) | 2014.11.11 |
Spring + ibatis/mybatis 연동에 필요한 JDBC 라이브러리 파일들을
각 DBMS별로 pom.xml에 등록을 위한 포스팅 해보도록 하겠습니다.
연동하고자 하는 JDBC 라이브러리는
MySQL, Oracle, MSSQL JDBC를 메이븐을 통해서 받도록 하겠습니다.
먼저 Maven에서 기본적으로 제공해주는 MySQL JDBC 라이브러리를 등록해보도록 하겠습니다.
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.31</version> </dependency>
상단 코드를 작성하고 저장을 해주셨다면
Properties -> Java Build Path -> Libraries탭에서 Maven Dependencies를 확인 해보시면
MySQL JDBC가 등록된 것을 확인하실 수 있을겁니다.
ojdbc jar 파일을 Maven Repository 사이트에서 검색하여 나오는 dependency로는 라이브러리 다운로드를 받을 수 없습니다.
<dependency> <groupId>ojdbc</groupId> <artifactId>ojdbc</artifactId> <version>14</version> </dependency>
"Missing artifact ojdbc:ojdbc:jar:14" 에러가 날 것이므로
상단 코드 대신 다른 dependency를 등록 해주도록 합니다.
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.4.0</version> </dependency>
위코드를 작성하셔도 아직은 dependency 코드부분에 여전히
"Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0" 오류가 나타날 것입니다.
<properties> 바로 위에 다음코드를 추가해주세요
<repositories> <repository> <id>mesir-repo</id> <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url> </repository> </repositories>
그럼 오라클의 dependency 오류는 사라질 것이며
다음처럼 ojdbc14.jar 라이브러리가 등록될 것입니다.
MSSQL JDBC 연동을 위한 라이브러리인 sqljdbc는 메이븐에서 제공을 하지 않아
별도로 로컬상의 Maven repository로 연동이 되어야 합니다.
제일먼저 SQL Server용 JDBC 를 다운로드 받도록 합니다.
http://www.microsoft.com/ko-kr/download/details.aspx?id=11774
상단 URL 접속 후 다운로드 버튼을 클릭합니다.
윈도우 기준으로 설명하기에 exe 파일 체크 후 Next버튼을 클릭하여 파일다운로드를 받았습니다.
다운로드 받은 exe파일을 실행을 합니다.
Unzip해준 경로를 보면 sqljdbc_4.0 디렉토리가 생성되어있습니다.
kor 디렉토리를 들어가시면 sqljdbc.jar 파일과 sqljdbc4.jar 파일이 존재하는데 아마 요즘 프로젝트들은
JRE 6.0 이상의 환경에서 작업하므로 sqljdbc4.jar 파일을 등록시켜주면 될겁니다.
아파치 메이븐으로 install 해주기위하여
하단 사이트에 접속하여 메이븐 파일을 다운로드 받도록 합니다.
http://maven.apache.org/download.cgi
압축을 해제 후 CMD 창을 띄워줍니다.
다운받아서 해제한 apache-maven의 bin디렉토리까지 이동을 합니다.
다음 명령어를 실행합니다.
mvn install:install-file -Dfile=D:\sqljdbc_4.0\kor\sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom --- [INFO] Installing D:\sqljdbc_4.0\kor\sqljdbc4.jar to C:\Users\jgh\.m2\repository \com\microsoft\sqlserver\sqljdbc4\4.0\sqljdbc4-4.0.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.960 s [INFO] Finished at: 2014-11-14T01:23:05+09:00 [INFO] Final Memory: 5M/15M [INFO] ------------------------------------------------------------------------
로그가 출력되면 정상 설치 된것입니다.
그럼 MSSQL JDBC 라이브러리 Dependency를 등록해보도록 하겠습니다.
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency>
위와같이 pom.xml에 등록해주면 오류없이 정상적으로 라이브러리 추가가 된 것을 확인 할 수 있습니다.
MySQL, Oracle, MSSQL JDBC 라이브러리 파일을 pom.xml에 등록하는 방법에 대하여 포스팅해보았습니다.
다음장은 spring3 + mybatis 연동설정에 대하여 포스팅하도록 하겠습니다.
by 개발로짜
Spring3 + Mybatis연동에 추가로 트랜잭션 설정 하여 실패시 Rollback 처리하기 (2) | 2014.11.14 |
---|---|
Spring3 + MyBatis 기본설정 + 연동테스트 후 쿼리로그 확인해보기 (8) | 2014.11.14 |
Spring3 인터셉터와 세션을이용하여 로그인 처리해보기 (2) | 2014.11.12 |
Spring3 RedirectAttributes 사용한 redirect POST 전송법 (0) | 2014.11.11 |
Spring3 Pathvariable 어노테이션을 이용하여 PARAMETER를 URL처럼 받아보기 (0) | 2014.11.11 |
이번장은 간단하게 ExtJS에서 제공하는 Ajax에 대하여 포스팅 해보도록 하겠습니다.
jQuery의 ajax를 접근해보셨던 분들이시면 쉽게 이해하실 수 있습니다.
간단한 예를 들어서 설명을 진행하겠습니다.
우선 ExtJS의 스크립트 태그는 다음과 같습니다.
Ext.onReady(function(){ Ext.create('Ext.panel.Panel',{ title : 'AJAX 비동기 예제', renderTo : Ext.getBody(), items : [{ xtype : 'textfield', fieldLabel : '아이디', id : 'user_id' },{ xtype : 'textfield', fieldLabel : '제목', id : 'title' }], fbar : [{ xtype : 'button', text : '전송', handler : function(btn){ var user_id = Ext.getCmp("user_id").getValue(); var title = Ext.getCmp("title").getValue(); Ext.Ajax.request({ url : '/submit.jsp', method : 'POST', params : { user_id : user_id, title : title }, success : function(response) { var result = Ext.JSON.decode(response.responseText); Ext.MessageBox.show({ title : '응답결과', msg : '아이디:'+result.id+',제목:'+result.title, buttons : Ext.MessageBox.YES, icon : Ext.MessageBox.INFO }) }, failure : function(){ alert("에러발생"); } }); } }] }) });
위에서 기본패널에 텍스트 컴포넌트 2개와 하단툴바에 버튼 생성을 하였습니다.
버튼 클릭이벤트 발생 시점에 'Ext.Ajax.request' 를 이용하여 비동기 통신을 호출하게 됩니다.
'Ext.Ajax.request' 의 각 속성에 대한 설명은 다음과 같습니다.
url : 비동기 호출을 할 URL주소값입니다.
method : form태그의 method와 동일한 개념의 호출방식을 작성해주면 됩니다.
params : 비동기 호출 페이지에 넘겨줄 parameter 데이터 값입니다.
success : 성공
failure : 실패
속성을 보면 jQuery에서 지원하는 $.ajax 와 거의 동일한 구조입니다.
비동기 호출페이지인 submit.jsp 파일을 생성하여
다음처럼 JSON RESPONSE 하는 코드를 작성해보도록 하겠습니다.
JSON 파싱을위한 라이브러리는
기존과 동일한 json-simple 라이브러리를 이용하겠습니다.
2014/10/06 - [코드저장소/java] - JSON 라이브러리를 이용하여 object생성과 문자열을 object형으로 변환해보기
String user_id = request.getParameter("user_id"); String title = request.getParameter("title"); JSONObject jsonObj = new JSONObject(); jsonObj.put("id", user_id); jsonObj.put("title", title); PrintWriter pw = response.getWriter(); pw.print(jsonObj); pw.flush(); pw.close();
위코드에서 알아보고자 한 부분은 사용자 페이지에서 전달받은 user_id와 title에 대한 값을 확인해보고
request받은 값들을 다시그대로 json 파싱하여 클라이언트 페이지로 response 해주는 샘플코드입니다.
실행결과를 한번 확인해보도록 하겠습니다.
정상적으로 Ajax 통신이 이루어진것을 확인하였습니다.
by 개발로짜
ExtJS 강좌 - ExtJS5의 polar 타입 차트그래프 간단하게 알아보기 (0) | 2014.11.18 |
---|---|
ExtJS 강좌 - ExtJS5의 cartesian 타입 차트그래프 종류별로 출력해보기 (0) | 2014.11.18 |
ExtJS 강좌 - DATAVIEW를 이용하여 데이터 목록 출력해보기 (3) | 2014.11.12 |
ExtJS 강좌 - 클릭이벤트를 적용하여 탭컴포넌트 동적으로 추가하기 (12) | 2014.11.08 |
ExtJS 강좌 - 마우스우클릭으로 contextmenu(컨텍스트메뉴) 띄워보기 (0) | 2014.11.08 |