이것은 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

com.manager.dao.sql.VcardDAO.xml




	
	
		
		
		
		
		
		
	
	
	
		insert into VcardTable(name, addr, cell, tel, fax, email)
			values(#name#, #addr#, #cell#, #tel#, #fax#, #email#)
	
	
		update VcardTable
			set addr=#addr#,cell=#cell#,tel=#tel#,fax=#fax#,email=#email#
			where name=#name#
	
	



예제로 설명하겠다.

<sqlMap namespace="vcard">

sqlMap으로 선언되며 

<typeAlias alias="VcardInformation" type="com.manager.vo.vcard.VcardInformation"/>

뒤에있을 resultMap에 사용할 class를 정의한다. 해당클래스에는 Xml파싱을 위한 어노테이션들이 기록되어있다. (다음장에서 설명)

<resultMap id="resultMapVcardInformation" class="VcardInformation">

VcardInformation 클래스의 인자를 sql쿼리에 쓰일 데이터와 맵핑해준다. resultMap은 select문 등 칼럼 맵핑이 필요할때 사용된다.

ex) <result property="varName" column="DB_NAME"/>

varName이라는 변수를 DB_NAME 칼럼에 맵핑

<select id="select" resultMap="resultMapVcardInformation" parameterClass="VcardInformation">

select

name, addr, cell, tel, fax, email

from

VcardTable

</select>

".select"로 호출된다. 

select시  parameterClass는 위에 선언한 resultMap의 class의 선언 어노테이션에 맞는 값을 찾아서 넣는다.

Column  | -> |StringVal

NAME칼럼의 DBVAL1 -> property에 해당하는 class의 어노테이션을찾아맵핑 -> name(변수)로 들어오게 된다.

말이 어려운데 맵핑 맵핑을 잘생각해보면 이해할 수 있다.

구현해보면 더 쉽게 이해할 수 있고..


<insert id="insert" parameterClass="VcardInformation">

insert into VcardTable(name, addr, cell, tel, fax, email)

values(#name#, #addr#, #cell#, #tel#, #fax#, #email#)

</insert>

마찬가지로 ".insert"로 선언된다.

parameterClass에 VcardInformation 객체로 되어있는데 필요한경우 HashMap, String 등 간단하게 사용도 가능하다.

VcardInformation 객체의 내부선언된 어노테이션의 변수에 ##으로 변수를 삽입, sql문에 사용 할 수 있다.


<select id="count" resultClass="Integer">

select count(uid) as total from VcardTable where name=#name#

</select>

위의 예제와 비슷하나 이것은 리턴값이 integer이다. resultClass를 보면 쉽게 구분 가능한데, 갯수를 구하여 리턴해야 하기때문에 굳이  객체선언 등 필요가 없다. 

이번 포스트는 좀.. 많이 난해하다. 남한테 설명하기란 어렵구나


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

iBatis구현 7 - xxxDAO.java  (0) 2012.03.29
iBatis 구현 - 6 Xml맵핑- .vo.xxx.java  (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

+ Recent posts