데이터 매퍼는 자바빈즈, Map구현체, 원시래퍼타입(String, Integer…) 그리고 SQL문을 위한 XML문서를 매핑하기 위한 XML서술자를
사용하는 매우 간단한 프레임워크를 제공한다.
![](http://postfiles14.naver.net/20101002_93/poloecko_1285980945697dkoAI_JPEG/600px-IBatis.jpg?type=w2)
1.Value객체정의
POJO타입의 ?파라미터 객체 정의
파라미터(자바빈즈, Map 또는 원시래퍼)로써 객체를 제공한다.
파라미터 객체는 update문에서 입력값을 셋팅하기 위해 사용되거나 쿼리문의 where절을 셋팅하기 위해서 사용된다
EmpVO
package ex1.vo;
public class EmpVO {
//DB에서 가져올 컬럼명들을 멤버로 선언
//사번 이름,직종,입사일
private String employee_id,first_name,job_id,hire_date;
public String getEmployee_id() {
return employee_id;
}
public void setEmployee_id(String employee_id) {
this.employee_id = employee_id;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getHire_date() {
return hire_date;
}
public void setHire_date(String hire_date) {
this.hire_date = hire_date;
}
public String getJob_id() {
return job_id;
}
public void setJob_id(String job_id) {
this.job_id = job_id;
}
}
2.환경설정 파일(sqlMapConfig.xml) 작성
DB정보
SqlMap파일정보
SQL문을 위한 XML문서를 매핑하기 위한 XML서술자
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE sqlMapConfig PUBLIC"-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<transactionManager type="JDBC"> //트랜잭션타입은 JDBC
<dataSource type="SIMPLE"> //간단한 JDBC로 할경우
<property name="JDBC.Driver" value="oracle.jdbc.OracleDriver"/> //DB 드라이버
<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:xe"/> //DB URL
<property name="JDBC.Username" value="hr"/> //DB 아이디
<property name="JDBC.Password" value="1111"/> // DB 패스워드
</dataSource>
</transactionManager>
<sqlMap resource="ex1\sqlMap\emp.xml"/>
</sqlMapConfig>
3.sqlMap파일작성
SQL문 작성
구문타입 |
속성 (결과객체,파라미터객체지정) |
사용하는 경우 |
<select> |
id,parameterClass,resultClass,parameterMap,resultMap |
데이터조회 |
<insert> |
id,parameterMap,resultMap |
데이터입력 |
<update> |
id,parameterMap,resultMap |
데이터수정 |
<delete> |
id,parameterMap,resultMap |
데이터삭제 |
데이터 매퍼프레임워크는 매핑된 구문을 실행하여 PreparedStatement 인스턴스를 생성할것이고
제공된 파라미터객체를 사용해서 파라미터를 셋팅하고 ResultSet으로부터 결과 객체를 생성한다.
<sql.xml>
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<select id="empAll" resultClass="ex1.vo.EmpVO">
SELECT employee_id,first_name,job_id,hire_date FROM employees
</select>
<select id="searchName" resultClass="ex1.vo.EmpVO" parameterClass="String">
SELECT * FROM employees WHERE first_name = #n#
</select>
</sqlMap>
4.JavaApp생성
1 ) 환경설정파일 스트림 로드
2 ) 클라이언트객체생성
3 ) iBATIS를 활용하여 SQL문 호출
4 ) 결과확인
update의 경우에 영향을 미친 rows의 숫자를 반환한다.
조회작업인 경우에 한 개(single)의 객체 또는 컬렉션 객체를 반환한다.
파라미터처럼 결과 객체는 자바빈즈, Map 원시타입래퍼또는 XML이 될수 있다.
package ex1.client;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import ex1.vo.EmpVO;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;
public class EmpClient {
public static void main(String[] args) throws IOException, SQLException {
//1)iBATIS환경설정 파일(sqlMapConfig.xml)을 스트림으로 생성한다
Reader r = Resources.getResourceAsReader("ex1/config/sqlMapConfig.xml");
//2)위에서 생성한 스트림을 가지고 sqlMap들만 가져와 sqlMapClient에게 전해준다.
SqlMapClient smap = SqlMapClientBuilder.buildSqlMapClient(r);
r.close();
//3) iBATIS활용-id가 empAll인 select요소를 수행한다.
List<EmpVO> list = smap.queryForList("empAll");
//4) 확인
for (EmpVO vo : list) {
System.out.println(vo.getEmployee_id()+"/"+vo.getFirst_name());
}
System.out.print("이름:");
Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
List<EmpVO> names = smap.queryForList("searchName", name);
for (EmpVO vo : names) {
System.out.println(vo.getEmployee_id()+"/"+vo.getFirst_name());
}
}
}