- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26741349&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
iBati를 이용한 DAO 개발
1. SQLMap XML 파일 작성
- /src/main/resources/sqlmap/ 폴더에 Emp.xml 파일을 생성한다.
- Emp.xml 파일에 아래와 같이 SELECT, INSERT 문장을 작성한다.
/src/main/resources/sqlmap/Emp.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="emp"> <typeAlias alias="emp" type="com.oracleclub.study.mvc.model.Emp"/> <select id="selectEmpList" resultClass="emp" > SELECT empno, ename, job, sal, NVL(mgr,0) mgr FROM emp </select> <insert id="insertEmp" parameterClass="emp" > INSERT INTO emp (empno, ename, job, sal, mgr, hiredate, deptno) VALUES (#empno#, #ename#, #job#, #sal#, 0, #hiredate#, #deptno#) </insert> </sqlMap>
2. sql-map-config.xml 파일 수정
- sql-map-config.xml 파일에 아래와 같이 Emp.xml 설정을 추가한다.
/src/main/resources/datasource/sql-map-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" useStatementNamespaces="true" /> <sqlMap resource="sqlmap/Emp.xml"/> </sqlMapConfig>
3. EmpDAO Class 작성
- 사원정보의 SELECT, INSERT 작업을 담당하는 DAO Class를 작성한다.
- SqlMapClient를 이용하여 사원정보의 DB 작업을 담당하는 DAO 클래스를 생성한다.
- com.oracleclub.study.mvc.dao 패키지를 생성하고 EmpDAO 클래스를 생성한다.
- SqlMapClientDaoSupport 상속하고, getSqlMapClientTemplate()을 이용하여 iBatis의 SqlMapClient API를 사용한다.
- @Repository 을 선언하여 DAO 클래스 임을 지정한다.
com.oracleclub.study.mvc.dao.EmpDAO.java
package com.oracleclub.study.mvc.dao; import java.util.List; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import org.springframework.stereotype.Repository; import com.oracleclub.study.mvc.model.Emp; /** * 사원정보를 관리하는 DAO * * @author : oramaster * */ @Repository public class EmpDAO extends SqlMapClientDaoSupport { private static final String NAMESPACE = "emp."; public void insertEmp(Emp emp) { getSqlMapClientTemplate().insert(NAMESPACE + "insertEmp", emp); } @SuppressWarnings("unchecked") public List<Emp> selectEmpList() { return getSqlMapClientTemplate().queryForList(NAMESPACE + "selectEmpList"); } }
4. EmpDAO Test Case 작성 및 테스트
- src 폴더 밑에 test/java 폴더 생성
- eclipse Java Build Path 설정에서 Source폴더를 아래와 같이 추가한다.
- src/test/java 하위에 com.oracleclub.study.mvc.dao 패키지를 생성하고 EmpDAOTest 클래스를 생성한다.
- 컴파일 오류가 발생하면 Junit 4 버전의 라이브러리를 추가한다.
com.oracleclub.study.mvc.dao.EmpDAOTest.java
package com.oracleclub.study.mvc.dao; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import com.ibatis.sqlmap.client.SqlMapClient; import com.oracleclub.study.mvc.model.Emp; /** * Class 내용 기술 * * @author : oramaster * */ @RunWith(SpringJUnit4ClassRunner.class) @Transactional @ContextConfiguration(locations = { "classpath:spring/applicationContext-datasource.xml" }) public class EmpDAOTest { @Autowired private SqlMapClient sqlMapClient; private EmpDAO empDAO; @Before public void setUp() { empDAO = new EmpDAO(); empDAO.setSqlMapClient(sqlMapClient); } @Test public void testSelectEmpList() { Assert.assertTrue(empDAO.selectEmpList().size() > 0); } @Test public void testInsertEmp() { Emp emp = new Emp(); emp.setEmpno(1298); emp.setEname("tester"); emp.setSal(1200); emp.setDeptno(10); empDAO.insertEmp(emp); } }
5. EmpDAO Test Case 실행
- Alt + Shift + x 를 누르고, t 버튼을 클릭해서 테스트를 실행해 보자
- 아래와 테스트가 정상적으로 수행이 되는지 확인해 보자
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=26741349&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.