자바 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 Xml03.* @brief Xml Classes04.*05.* registered date 2010010506.* 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-xml3.* @brief 사용자관리 레코드 sub4.* @return xml5.//-->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 |
