2008년 8월 18일 월요일

spring+ibatis연결하기. V_2

* spring에 ibatis를 이용한 실행


우선 오라클9i를 기준으로 scott/tiger로 접속하여 위의 내용처럼

2개의 컬럼description과 price컬럼을 만들어 준다.

쿼리.



Create table PRODUCT (DESCRIPTION varchar2(20), PRICE number(10,2));


참조 차이트 : http://jiwook6.tistory.com/76


예제를 실행하기 위해 3개의 값을 입력한다.



insert into product values('PSP', 20000);

insert into product values('NINTENDO', 10000);

insert into product values('XBOX', 5000);



자 ibatis와 연결하자.

우선 ibatis설정을 알아보자.

버전은 ibatis-2.3.0.677 로써

탐색기로 Lib 폴더에ibatis-2.3.0.677.jar를 넣어주고 이클립스에서 새로고침해주자.



필요한 파일.

sqlMapConfig.xml

sqlResource.properties

sqlMap.xml



처음sqlMapConfig.xml파일은 데이타베이스와 연결하기 위한 설정파일이다. 디비의 접속 아이디와 비번 jdbc드라이버와 url주소를 입력한다.



실질적으로 아이디, 비번, 드라이버, url주소의 실제값은sqlResource.properties를 이용하여 접속한다. 유지보수하기 편하게 하기 위해 프로퍼티파일의 값만 변경하게 되면 어떠한 디비와도 연결이 가능하다.


마지막으로sqlMap.xml 파일은 실제 쿼리문이 들어가는 파일이다.

디비의 모든 값을 꺼내오는 것을 기본으로 시작해보자.


sqlMapConfig.xml

WEB-INF/

---------------------------------------------------------------------------









* 프로퍼티 파일의 경로 지정


lazyLoadingEnabled="true"

cacheModelsEnabled="true"

enhancementEnabled="true"

maxRequests="512"

maxSessions="128"

maxTransactions="32"

/>

* ibatis설정내용들.

















*JDBC연결할 내용기술, 프로퍼티에 값을 입력하여 여기서는 값을 받아온다.



* 실제 쿼리문이 들어가 설정파일.


---------------------------------------------------------------------------


sqlResource.properties

dao/

---------------------------------------------------------------------------

driver=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@192.168.1.10:1521:tomato

username=scott

password=tiger

---------------------------------------------------------------------------







sqlMap.xml

src/dao/sqlMap.xml

---------------------------------------------------------------------------









* Product클래스의 경로와 지정 이름을 결정한다.









* 데이타베이스에 저장된 컬럼의 이름을 지정하여 결과Map지정



* 실제 쿼리문을 작성하여 준다. 위에서는 select한 모든 결과값을 받아오는 쿼리문으로 배열형태로 반환된다.


---------------------------------------------------------------------------


Ibatis설정부분은 끝났다.

Spring에서 실행되는 부분을 보자.



springapp-servlet.xml 가장 핵심이 되는 서블릿.xml파일로써 ibatis의

sqlMapConfig.xml을 불러 or매핑을 해준다.

---------------------------------------------------------------------------













* 스프링에서 제공하는ibatis.SqlMapClientFactoryBean를 이용하여주고 설정sqlMapConfig.xml파일을 연결시켜준다.







* DAO클래스를 임플리먼츠한 ProductManagerDaoImpl클래스를 sqlMapClient

를 연결시켜준다.







* 컨트롤파일에 연결시켜준다.



messages











springappController













org.springframework.web.servlet.view.JstlView

/WEB-INF/jsp/

.jsp





---------------------------------------------------------------------------




DAO부분을 알아보자.

DAO는 인터페이스를 이용하여implements하여 작성한다.


ProductManagerDao.java작성

dao/

---------------------------------------------------------------------------

package dao;

import java.sql.SQLException;

import java.util.*;

public interface ProductManagerDao {

public List getProductManagerList() throws SQLException;

* 몸체가 없는 메서드를 선언한다.

* 테이블에 모든 데이터를 가져오는 메서드.

}
---------------------------------------------------------------------------


ProductManagerDaoImpl.java작성

dao/

---------------------------------------------------------------------------

package dao;

import java.sql.SQLException;

import java.util.List;

import java.util.Map;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.ibatis.sqlmap.client.SqlMapClient;

import bus.ProductManager;

public class ProductManagerDaoImpl extends SqlMapClientDaoSupport implements ProductManagerDao{

* 스프링에 포함된 SqlMapClientDaoSupport를 상속받는다. 이 클래스 안에는 ibatis의 SqlMapClient를 쉽게 구현할수 있는 getSqlMapClient()를 제공한다.

public List getProductManagerList() throws SQLException{

SqlMapClient client = super.getSqlMapClient();

List re= client.queryForList("selectList");

return re;

}

* 인터페이스에서 구현한 메서드의 몸체를 구현해준다.

* SqlMapClient를 상속받은 SqlMapClientDaoSupport를 통해 getSqlMapClient()를

이용해 구현한다.

* queryForList("selectList")를 통해 sqlMap.xml파일에서의 쿼리문을 통한

내용을 List형태로 받아온다.

- ("selectList")역시sqlMap.xml안에 쿼리문의 id이다.

}

---------------------------------------------------------------------------
이렇게 DAO부분을 작성해준다. 현재 작성된부분은 단순히 테이블에 작성된 모든 내용을 List로 받아 컨트롤로 넘겨준다.



컨트롤 파일 작성. SpringappController.java작성

---------------------------------------------------------------------------

package web;

import org.springframework.web.servlet.mvc.Controller;

import org.springframework.web.servlet.ModelAndView;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.util.Map;

import java.util.HashMap;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import dao.*;

public class SpringappController implements Controller {

protected final Log logger = LogFactory.getLog(getClass());

private ProductManagerDaoImpl pDao;

* Dao부분에서 작성한 클래스를 선언해준다.

public void setProductManagerDao(ProductManagerDaoImpl pDao)

{

this.pDao = pDao;

}

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)

throws Exception {

String now = (new java.util.Date()).toString();

logger.info("returning hello view with " + now);

Map myModel = new HashMap();

myModel.put("now", now);

myModel.put("products", pDao.getProductManagerList());

* Dao부분에서 작성한 getProductManagerList()를 부름으로 Map에 저장한다.

return new ModelAndView("hello", "model", myModel);

}

}

---------------------------------------------------------------------------

위에서 작성된 Controller 파일에서 Dao를 부르는 부분을 작성하여 준다.

참조 사이트 : http://jiwook6.tistory.com/76

댓글 없음: