이것은 iBatis라기 보다는 jaxb 마샬링구현이기는 하나 일단 iBatis변수 맵핑에 중요한 주제이므로 

iBatis로 일단 설명하겠다.

om.manager.vo.vcard.VcardInformation.java

package com.manager.vo.vcard;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="VcardInformation",
		propOrder ={"name","addr","cell","tel","fax","email"})
public class VcardInformation {
	@XmlElement(name="name")
	private String name;
	@XmlElement(name="addr")
	private String addr;
	@XmlElement(name="cell")
	private String cell;
	@XmlElement(name="tel")
	private String tel;
	@XmlElement(name="fax")
	private String fax;
	@XmlElement(name="email")
	private String email;
	
	public VcardInformation(){		
	}
	public VcardInformation(VcardInformation vc){
		this.name = vc.name;
		this.addr = vc.addr;
		this.cell = vc.cell;
		this.tel = vc.tel;
		this.fax = vc.fax;
		this.email = vc.email;		
	}
	public String getName(){
		return this.name;
	}
	public String getAddr(){
		return this.addr;
	}
	public String getCell(){
		return this.cell;
	}
	public String getTel(){
		return this.tel;
	}
	public String getFax(){
		return this.fax;
	}
	public String getEmail(){
		return this.email;
	}
	public void setName(String name){
		this.name = name;
	}
	public void setAddr(String addr){
		this.addr = addr;
	}
	public void setCell(String cell){
		this.cell = cell;
	}
	public void setTel(String tel){
		this.tel= tel;
	}
	public void setFax(String fax){
		this.fax = fax;
	}
	public void setEmail(String email){
		this.email = email;
	}
}


중요한점은 @ 어노테이션 들이다.

@XmlType으로 객체안에 쓰일 변수의 수만큼 propOrder를 순서에 맞게 배열한다.

@XmlElement로 DB수납시 쓰일 변수의 이름을 설정한다. 즉 이 이름이 앞서 나온 #strVar#이 되는것이다.

위의 경우 #name#을 쓰게 되면 String name이 선택되게 된다. 어노테이션을 맞게 써준다면  변수의 이름은 관련없다.

get/set 함수를 알맞게 써줌으로 인해 xxxDAO.xml에서 가져오는 데이터를 원하는곳에 뿌려주고, 전달할수 있게 된다.

ex) setName("정영민") -> .insert호출 #name# 에는 정영민이 담김. 

.select ->VcardInformation객체 받아옴. var= getName()  var에 정영민이 담겨오게됨

(많은부분 생략)






'DB > iBatis' 카테고리의 다른 글

iBatis구현 7 - xxxDAO.java  (0) 2012.03.29
iBatis 구현 - 5 xxxDAO.xml  (0) 2012.03.29
iBatis 구현 - 4 sqlMapConfig.xml  (0) 2012.03.29
iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28
xxx-servlet.xml에서 설정한 위치에 해당하는  sqlMap을 설정해야한다.
간단한 설정 예이다.


<?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"
        maxRequests="32"
        maxSessions="10"
        maxTransactions="5"
        useStatementNamespaces="true"/>
	<sqlMap resource="com/manager/dao/sql/VcardDAO.xml"/>
	
	
</sqlMapConfig>


간단한 설정, 그리고 사용할 sql문의 위치로 구성된다.

위의 경우 VcardDAO.xml에는 프로젝트에서 사용할 sql문이 담겨져있다.

.이 아니라 /로 패키지를 구분한다.



'DB > iBatis' 카테고리의 다른 글

iBatis 구현 - 6 Xml맵핑- .vo.xxx.java  (0) 2012.03.29
iBatis 구현 - 5 xxxDAO.xml  (0) 2012.03.29
iBatis에서 HashMap의 활용  (2) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28
iBatis 구현 - 2 web.xml 수정  (0) 2012.03.28

HashMap은 간단하게 말해 key와 value의 집합이다. 즉 key로 value를 찾아갈수 있게한다.

iBatis에서 적용예로 알아보자.

public void delete(String email, Calendar time) throws Exception {
			Map<String, Object> parameters = new HashMap<String, Objec>();
			parameters.put("calendarTime", time);
			parameters.put("emailAddress", email);
			sqlMapClientTemplate.update(".delete", parameters);
}

위의 경우 인자로 들어온 2개의 파라메터값을 put 한다. 

즉    String  // "calendarTime"  

 Object // time

이 되는것이다. 

이렇게 되면 HashMap에는

String            | Object

calendarTime | time

emailAddress | email

이런 형태로 key | value 쌍의 데이터가 들어간다.


이를 따라서 sqlMap의 .delete 까지 따라들어가면

<sqlMap>
 ~설정~
			<update id="delete" parameterClass="HashMap">
			update
						account
			set
						delete_mark=1,
						modified_time=#calendarTime#
			where
						email_address=#emailAddress#
			</update>
</sqlMap>


왜 쿼리가 delete가 아닌 update인것은 account를 실제 삭제하는것이 아니라 삭제된 것으로 표기하기 때문이다. (정하기나름)

중요한것은 parameterClass가 HashMap으로 들어왔기 때문에 해당 key를 #key#형태로 써줌으로서 내부에 값을 가져올수 있다는 것이다.

여기서는 calendarTime과 emailAddress Key로 소스의 데이터 time과 email 값을 쿼리문에 사용할수 있게되었다.



'DB > iBatis' 카테고리의 다른 글

iBatis 구현 - 5 xxxDAO.xml  (0) 2012.03.29
iBatis 구현 - 4 sqlMapConfig.xml  (0) 2012.03.29
iBatis 구현 - 3 xxx-servlet.xml 작성  (0) 2012.03.28
iBatis 구현 - 2 web.xml 수정  (0) 2012.03.28
iBatis 구현 - 1 대략적 개념  (0) 2012.03.28

+ Recent posts