파일 1 MemberDTO.java

package ibatis.dto;

public class MemberDTO {
private String id;
private String password;
private String name;
private String registerNumber1;
private String registerNumber2;
private int mileage;

public MemberDTO() {}

public MemberDTO(String id, String password, String name,
String registerNumber1, String registerNumber2, int mileage) {
this.id = id;
this.password = password;
this.name = name;
this.registerNumber1 = registerNumber1;
this.registerNumber2 = registerNumber2;
this.mileage = mileage;
}

public String getId() {
return id;
}


public void setId(String id) {
this.id = id;
}


public String getPassword() {
return password;
}


public void setPassword(String password) {
this.password = password;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public String getRegisterNumber1() {
return registerNumber1;
}


public void setRegisterNumber1(String registerNumber1) {
this.registerNumber1 = registerNumber1;
}


public String getRegisterNumber2() {
return registerNumber2;
}


public void setRegisterNumber2(String registerNumber2) {
this.registerNumber2 = registerNumber2;
}


public int getMileage() {
return mileage;
}


public void setMileage(int mileage) {
this.mileage = mileage;
}

@Override
public String toString() {
return "회원정보 [아이디=" + id + ", 비밀번호=" + password + ", 이름="
+ name + ", 주민번호1=" + registerNumber1
+ ", 주민번호2=" + registerNumber2 + ", 마일리지="
+ mileage + "]";
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + mileage;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result
+ ((password == null) ? 0 : password.hashCode());
result = prime * result
+ ((registerNumber1 == null) ? 0 : registerNumber1.hashCode());
result = prime * result
+ ((registerNumber2 == null) ? 0 : registerNumber2.hashCode());
return result;
}


@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MemberDTO other = (MemberDTO) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (mileage != other.mileage)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (registerNumber1 == null) {
if (other.registerNumber1 != null)
return false;
} else if (!registerNumber1.equals(other.registerNumber1))
return false;
if (registerNumber2 == null) {
if (other.registerNumber2 != null)
return false;
} else if (!registerNumber2.equals(other.registerNumber2))
return false;
return true;
}

}

파일 2 MemberDAO.java

package ibatis.dao;

import ibatis.dto.MemberDTO;

import java.io.Reader;
import java.sql.SQLException;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class MemberDAO {
private static MemberDAO instance = new MemberDAO();
private SqlMapClient sqlMap;//sql문 실행 메소드를 가진 객체
private MemberDAO(){
try {
Reader reader = Resources.getResourceAsReader("config/SqlMapConfig.xml");
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static MemberDAO getInstance(){
return instance;
}
//회원 데이터 insert 메소드
public void insertMember(MemberDTO mdto) throws SQLException{
sqlMap.insert("insertMember", mdto);
}
//id로 회원 정보 조회
public MemberDTO selectMemberById(String id) throws SQLException{
return (MemberDTO) sqlMap.queryForObject("selectMemberById", id);
}
}

파일 3 member.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<!-- insert 태그 작성 -->
<insert id="insertMember" parameterClass="ibatis.dto.MemberDTO">
insert into member(id, password, name, register_Number1, register_Number2, mileage) values(#id#,#password#,#name#,#registerNumber1#,#registerNumber2#,#mileage#)
</insert>
<!-- select 태그 작성 -->
<select id="selectMemberById" parameterClass="java.lang.String" resultClass="ibatis.dto.MemberDTO">
select id,
password
name,
register_Number1 as registerNumber1,
register_Number2 as registerNumber2,
mileage
from member
where id=#id#
</select>
</sqlMap>

<!-- xxx.insert("insertMember", mdto); -->
<!-- Object obj = xxx.queryForObject("selectMemberById", "id"); 나중에 MemberDTO로 캐스팅 -->

파일 4 SqlMapConfig.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>

<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@127.0.0.1:1521:XE"/>
<property name="JDBC.Username" value="scott"/>
<property name="JDBC.Password" value="tiger"/>
</dataSource>
</transactionManager>

<sqlMap resource="config/member.xml"/>

</sqlMapConfig>

파일 5 TestMember.java

package ibatis.main;

import java.sql.SQLException;

import ibatis.dao.MemberDAO;
import ibatis.dto.MemberDTO;

public class TestMember {
public static void main(String[] args) throws SQLException {
MemberDTO mdto1 = new MemberDTO("rrrr", "1111", "김승우", "111111", "1111111", 10000);
MemberDTO mdto2 = new MemberDTO("tttt", "22222", "김종민", "222222", "2222222", 20000);
MemberDTO mdto3 = new MemberDTO("yyyy", "33333", "엄태웅", "333333", "3333333", 30000);

MemberDAO dao = MemberDAO.getInstance();
dao.insertMember(mdto1);
dao.insertMember(mdto2);
dao.insertMember(mdto3);

MemberDTO mdto4 = dao.selectMemberById("yyyy");
System.out.println(mdto4);
}
}

결과

 

Posted by 조은성
,

1. iBATIS 실행 흐름도

 

2. iBATIS 설정 파일

① 설정파일은 XML기반으로 작성

② SqlMapConfig

- 전역 설정 위한 파일 : iBATIS Framework가 실행되는 데 필요한 여러 설정들을 한다

- Transaction 관리정보, DataSource 생성을 위한 설정 정보, SqlMap 파일 위치 등

③ SqlMap

- SQL문을 등록

- SQL문을 실행하기 위해 필요한 input Data와 OutputData에 대한 설정을 한다.

④ 설정 파일들은 작성 후 classpath내 저장한다.

3. SqlMapConfig 설정

① SQLMapConfig 설정 파일(SqlMapConfig.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 useStatementNamespaces=“false” cacheModelsEnabled=“true” />

<트랜 잭션 관리>

<transactionManager type="JDBC" commitRequired="false">
<DataSource 설정>

<dataSource type="SIMPLE">
<property name="JDBC.Driver" value=“DriverClassName"/>
<property name="JDBC.ConnectionURL" value=“Url”/>
<property name="JDBC.Username" value=“User/>
<property name="JDBC.Password" value=“Password"/>
</dataSource>
</transactionManager>

<sqlMap 파일 참조>

<sqlMap resource="config/member.xml"/>

</sqlMapConfig>

② <typeAlias> 요소

- 설정파일에서 사용할 클래스의 별칭(alias) 설정

- SqlMap에서도 설정 가능

- iBATIS는 정의된 alias로 언제든지 원래 type에 접근 가능

- SqlMapConfig에 설정하면 모든 SqlMap에서 사용가능

· <typeAlias alias="mdto" type="member.dto.MemberDTO" />

- Framework에서 미리 정의하여 제공하는 typeAlias

· Transaction manager : JDBC, JTA, EXTERNAL

· Data types : string, int, long, double, boolean, hashmap, arraylist, object 등

· Data source factory : SIMPLE, DBCP, JNDI

③ <transactionManager> 요소

- Transaction Manager 타입 설정

· JDBC : 단순 JDBC 기반의 Transaction Manager를 제공함.

· JTA : application이 동작하는 컨테이너 기반의 Transaction Manager를 제공함.

· EXTERNAL : 트랜잭션 관리를 iBATIS에서 하지 않음.

- <dataSource> : iBATIS에서 사용할 DataSource를 생성.

· SIMPLE : iBATIS 자체 제공하는 DataSourceFactory 사용.

· DBCP : Jakarta Commons Database Connection Pool 구현함.

· JNDI : Naming서버에 등록된 DataSource를 사용함.

보통 Container가 제공하는 것을 사용.

· 하위태그를 이용하여 필요한 property들을 설정한다. (driver, url 계정정보 등)

④ <sqlMap> 요소

- SQL문을 가지고 있는 설정파일인 SQL Map파일의 위치 지정

- resource 속성 : class path 상의 SQL Map 파일

- 여러 파일 지정 가능

 

'프로그래밍 > ibatis(Mybatis)' 카테고리의 다른 글

iBATIS를 통한 SQL 실행  (0) 2012.06.15
iBatis 예제 - insert와 select하기  (0) 2012.06.15
iBATIS Quick Start  (0) 2012.06.15
ibatis 시작하기[실습]  (0) 2012.06.14
framwork 종류와 개념  (0) 2012.06.14
Posted by 조은성
,

1. iBATIS SqlMap Config(sqlmap-config.xml) 작성

- iBATIS framework에 대한 설정

<?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>

<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@127.0.0.1:1521:XE"/>
<property name="JDBC.Username" value="scott"/>
<property name="JDBC.Password" value="tiger"/>
</dataSource>
</transactionManager>

<sqlMap resource="config/member.xml"/>

</sqlMapConfig>

2. SqlMap 파일 작성(User.xml) - SQL문을 등록하는 설정파일

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<!-- insert 태그 작성 -->
<insert id="insertMember" parameterClass="ibatis.dto.MemberDTO">
insert into member(id, password, name, register_Number1, register_Number2, mileage) values(#id#,#password#,#name#,#registerNumber1#,#registerNumber2#,#mileage#)
</insert>
<!-- select 태그 작성 -->
<select id="selectMemberById" parameterClass="java.lang.String" resultClass="ibatis.dto.MemberDTO">
select id,
password
name,
register_Number1 as registerNumber1,
register_Number2 as registerNumber2,
mileage
from member
where id=#id#
</select>
</sqlMap>

<!-- xxx.insert("insertMember", mdto); -->
<!-- Object obj = xxx.queryForObject("selectMemberById", "id"); 나중에 MemberDTO로 캐스팅 -->

3. iBATIS Data Access Object 작성

package ibatis.dao;

import ibatis.dto.MemberDTO;

import java.io.Reader;
import java.sql.SQLException;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class MemberDAO {
private static MemberDAO instance = new MemberDAO();
private SqlMapClient sqlMap;//sql문 실행 메소드를 가진 객체
private MemberDAO(){
try {
Reader reader = Resources.getResourceAsReader("config/SqlMapConfig.xml");
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static MemberDAO getInstance(){
return instance;
}
//회원 데이터 insert 메소드
public void insertMember(MemberDTO mdto) throws SQLException{
sqlMap.insert("insertMember", mdto);
}
//id로 회원 정보 조회
public MemberDTO selectMemberById(String id) throws SQLException{
return (MemberDTO) sqlMap.queryForObject("selectMemberById", id);
}
}

 

 

'프로그래밍 > ibatis(Mybatis)' 카테고리의 다른 글

iBatis 예제 - insert와 select하기  (0) 2012.06.15
iBATIS 실행 흐름도와 설정파일  (0) 2012.06.15
ibatis 시작하기[실습]  (0) 2012.06.14
framwork 종류와 개념  (0) 2012.06.14
Ibatis 개요  (0) 2012.06.14
Posted by 조은성
,