基本数据类User,ibatis通过调用queryForList返回结果数据List<User>
public class User {
private String user_id;
private String user_name;
private String request_ip;
private String login_time;
public String getUser_id() {
return user_id;
}
public void setUser_id(String userId) {
user_id = userId;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String userName) {
user_name = userName;
}
public String getRequest_ip() {
return request_ip;
}
public void setRequest_ip(String requestIp) {
request_ip = requestIp;
}
public String getLogin_time() {
return login_time;
}
public void setLogin_time(String loginTime) {
login_time = loginTime;
}
}
listToXml方法,将List<User> list 的结果转换成xml表示的方式,返回String文本。
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.List;
public class ListToXml {
public static String listToXml(List list) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
String xml="<?xml version='1.0' encoding='gb2312'?><list>";
for(int i=0;i<list.size();i++){
//获取list下的类对象
Object bean = list.get(i);
//获取对象的名称
String beanName = bean.getClass().getSimpleName();
//将对象名称作为节点名
xml += "<"+beanName +">";
//获取对象中所有的方法名,用于截取出其中的元素名称
Method[] methods = bean.getClass().getMethods();
for(int j=0;j<methods.length;j++){
String methodName =methods[j].getName();
//通过get方法获取元素名,同时过滤掉类的固有getClass方法。
if(methodName.startsWith("get") && !(methodName.equals("getClass")) ){
//元素名称的首字母改成小写
String elementName = methodName.substring(3,4).toLowerCase()+methodName.substring(4);
//获取元素的值
String elementValue =(String) methods[j].invoke(bean, null);
//如果元素是Date类型,格式化处理
if (methods[j].getReturnType().equals(Date.class)){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
elementValue = sdf.format(methods[j].invoke(bean, null));
};
xml += "<"+elementName+">"+elementValue+"</"+elementName+">";
}
}
xml+="</"+beanName+">";
}
xml += "</list>";
return xml;
}
}
测试:
ibatis的sql配置
<?xml version="1.0" encoding= "GBK"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="Users" >
<select id= "getUserInfo" parameterClass ="java.lang.String" resultClass="com.test.beans.User" >
select user_id,user_name,request_ip,login_time from user_online where user_id = #user_id#
</select>
</sqlMap>
java测试代码部分:
List<User> list = dao.getUserInfo("xwl");
String xml = ListToXml.listToXml(list);
System.out.println(xml);
输出结果:
<?xml version='1.0' encoding='gb2312'?><list><User><user_id>xwl</user_id><user_name>小五郎</user_name><request_ip>127.0.0.1</request_ip><login_time>2015-07-14 17:26:56.26</login_time></User></list>
输出的xml可以作为返回数据传到前端,比如jQuery.post设置返回数据格式为'xml',
<%
List<User> list= (List<User>) request.getAttribute("result");
String xml = ListToXml.listToXml(list);
response.getWriter().write(xml);
response.getWriter().flush();
response.getWriter().close();
%>