如何将查询结果集映射为xml格式的数据?
映射文件:
- <!--mappingtoxmldata-->
- <selectid="selectXmlData"resultClass="xml"xmlResultName="Product"parameterClass="int">
- <![CDATA[
- select*fromt_productwhereprd_id=#value#
- ]]>
- </select>
- <selectid="selectXmlDatas"resultClass="xml"xmlResultName="Product">
- <![CDATA[
- selectprd_idasid,
- prd_descriptionasdescription,
- prd_priceasprice
- fromt_product
- ]]>
- </select>
- <!--ENDmappingtoxmldata-->
DAO层:
- publicObjectgetXmlData(intid)throwsSQLException{
- init();
- Objectobj=(Object)sqlMapClient.queryForObject("selectXmlData",id);
- returnobj;
- }
- publicListgetXmlDatas()throwsSQLException{
- init();
- Listlist=(List)sqlMapClient.queryForList("selectXmlDatas");
- returnlist;
- }
测试类:
- publicclassProductTest{
- ProductDAOproductDao=newProductDAOImpl();
- publicstaticvoidmain(String[]args)throwsSQLException{
- ProductTestptest=newProductTest();
- ptest.getXmlData(1);
- System.out.println("-------------------");
- ptest.getXmlDatas();
- }
- /**
- *获得XML格式的数据
- *@throwsSQLException
- */
- publicvoidgetXmlData(intid)throwsSQLException{
- //查找t_product表,将其结果映射到xml!
- //返回值是xml形式的字符串
- Objectobj=(Object)productDao.getXmlData(1);
- if(objinstanceofProduct){
- System.out.println("returntypeisProduct");
- }elseif(objinstanceofString){
- System.out.println("returntypeisString");
- }else{
- System.out.println("returntypeisunknow");
- }
- System.out.println(obj);
- }
- publicvoidgetXmlDatas()throwsSQLException{
- Listlist=(List)productDao.getXmlDatas();
- Iteratori=list.iterator();
- while(i.hasNext()){
- Objectobj=i.next();
- System.out.println(obj.getClass());
- }
- System.out.println(list);
- }
- }
结果:
return type is String
<?xml version="1.0" encoding="UTF-8"?>
<Product>
<prd_id>1</prd_id>
<prd_description>basketball</prd_description>
<prd_price>206.99</prd_price>
</Product>
-------------------
class java.lang.String
class java.lang.String
[<?xml version="1.0" encoding="UTF-8"?>
<Product>
<id>1</id>
<description>basketball</description>
<price>206.99</price>
</Product>,
<?xml version="1.0" encoding="UTF-8"?>
<Product>
<id>2</id>
<description>football</description>
<price>106.99</price>
</Product>]