자바 iBATIS 결과를 XML 리턴받기 : xmlResultName , java , xml
JAVA / 2011. 4. 6. 11:17
IBATIS 는 결과 값을 xml 로 리턴해주는 아주 좋은 기능이 있다. 다만 List 로 받을 경우 따로 파싱해줘야 하는 점이 걸릴뿐이다.
<%=sqlMap.queryForList("select-user-xml", null)%>
위 소스를 브라우저에서 확인하면 각 row 마다 하나의 xml형식으로 완성시켜 배열로 리턴해주게 된다.
++ 참고사이트 : http://naingyo.springnote.com/pages/1495674 iBATIS 가 xml 로 반환해준 값이 라는 부분을 참조하자.
위 결과를 xml 데이터로 사용할 수 없기에 한번더 파싱과정을 거쳐야 한다. 위 사이트도 해결책이 되겠지만, 유동적이지 못한 부분이 걸리는 것 같다. 각 데이터마다 모델에 맞는 처리를 해줘야한다는 것. 그래서 하루종일 이것을 어떻게 하면 간편하게 사용할 수 있을 까? 고민끝에 결과가 나와 소스를 공개한다.
본 소스는 2010/01/05 - [개발센터/JAVA] - 자바 XML 제어 라이브러리 JDOM : JAVA 의 확장 버전이다.
* sqlMap
* Sample Source
* 결과
++ 참고사항
http://www.jdom.org/pipermail/jdom-interest/2001-April/004948.html
출처
http://syaku.tistory.com/trackback/159
<%=sqlMap.queryForList("select-user-xml", null)%>
위 소스를 브라우저에서 확인하면 각 row 마다 하나의 xml형식으로 완성시켜 배열로 리턴해주게 된다.
++ 참고사이트 : http://naingyo.springnote.com/pages/1495674 iBATIS 가 xml 로 반환해준 값이 라는 부분을 참조하자.
위 결과를 xml 데이터로 사용할 수 없기에 한번더 파싱과정을 거쳐야 한다. 위 사이트도 해결책이 되겠지만, 유동적이지 못한 부분이 걸리는 것 같다. 각 데이터마다 모델에 맞는 처리를 해줘야한다는 것. 그래서 하루종일 이것을 어떻게 하면 간편하게 사용할 수 있을 까? 고민끝에 결과가 나와 소스를 공개한다.
본 소스는 2010/01/05 - [개발센터/JAVA] - 자바 XML 제어 라이브러리 JDOM : JAVA 의 확장 버전이다.
* Xml.java
01.
/**
02.
* @class Xml
03.
* @brief Xml Classes
04.
*
05.
* registered date 20100105
06.
* programmed by Seok Kyun. Choi. 최석균
08.
*/
09.
10.
package
org.syaku.util;
11.
12.
import
org.apache.log4j.Logger;
13.
14.
import
java.util.*;
15.
import
java.io.*;
16.
17.
import
org.jdom.*;
18.
import
org.jdom.input.*;
19.
import
org.jdom.output.*;
20.
21.
import
org.syaku.util.*;
22.
23.
public
class
Xml {
24.
private
static
Logger log = Logger.getLogger(Xml.
class
);
25.
26.
private
SAXBuilder builder =
new
SAXBuilder();
27.
28.
private
String root_node =
"data"
;
29.
private
String child_node =
"item"
;
30.
31.
// iBATIS
32.
public
Document iBATISForMake(List result)
throws
Exception {
33.
Element data =
new
Element(root_node);
34.
35.
for
(
int
i =
0
; i < result.size(); i++ ) {
36.
Element element =
new
Element(child_node);
37.
String xml = (String)result.get(i);
38.
Document document = builder.build(
new
StringReader(xml));
39.
40.
Element root = document.getRootElement();
41.
List child = root.getChildren();
42.
for
(Iterator iter = child.iterator();iter.hasNext();) {
43.
Element node = (Element) iter.next();
44.
45.
String name = (String) node.getName();
46.
String value = (String) node.getText();
47.
addElement(element,name,value);
48.
}
49.
50.
data.addContent(element);
51.
}
52.
53.
Document document =
new
Document(data);
54.
55.
return
document;
56.
}
57.
58.
// 엘리먼트 생성
59.
public
Element addElement(Element parent, String name, String value) {
60.
Element element =
new
Element(name);
61.
element.setText(value);
62.
parent.addContent(element);
63.
return
parent;
64.
}
65.
66.
// 애트리뷰트 생성
67.
public
void
addAttribute(Element element, String name, String value){
68.
Attribute attribute =
new
Attribute(name,value);
69.
element.setAttribute(attribute);
70.
}
71.
72.
73.
}
* sqlMap
1.
<!--//
2.
* @id select-user-xml
3.
* @brief 사용자관리 레코드 sub
4.
* @return xml
5.
//-->
6.
<
select
id
=
"select-user-xml"
parameterClass
=
"hashMap"
resultClass
=
"xml"
xmlResultName
=
"data"
>
7.
생략
8.
</
select
>
* Sample Source
01.
<%@ page contentType=
"text/html; charset=euc-kr"
%>
02.
<%@ page
import
=
"java.util.*"
%>
03.
<%@ page
import
=
"org.jdom.*"
%>
04.
<%@ page
import
=
"org.jdom.output.*"
%>
05.
<%@ page
import
=
"org.syaku.util.*"
%>
06.
07.
<%
08.
HashMap hm =
new
HashMap();
09.
List result = sqlMap.queryForList(
"select-user-xml"
, hm);
10.
11.
Xml xml =
new
Xml();
12.
Document document = (Document) xml.iBATISForMake(result);
13.
14.
XMLOutputter outputter =
new
XMLOutputter();
15.
Format format = Format.getPrettyFormat();
16.
format.setEncoding(
"EUC-KR"
);
17.
outputter.setFormat(format);
18.
19.
response.setContentType(
"application/xml"
);
20.
outputter.output(document, response.getWriter());
21.
%>
* 결과
++ 참고사항
http://www.jdom.org/pipermail/jdom-interest/2001-April/004948.html
출처
http://syaku.tistory.com/trackback/159
'JAVA' 카테고리의 다른 글
중복로그인 체크 (2) | 2011.08.12 |
---|---|
java 형변환 모음 (1) | 2011.04.06 |
태그 제거 정규식 (2) | 2011.03.16 |
이미지 태그 SRC 경로 추출 (3) | 2011.03.16 |
파일명 추출 (2) | 2011.03.16 |