实体类要加注解
实体类要加注解@XStreamAlias("msg")
public class Msg implements Serializable {
private static final long serialVersionUID = 3196422897798539811L
@XStreamAsAttribute
private String toUid
@XStreamAsAttribute
private String fromUid
@XStreamAsAttribute
private String flag
@XStreamAsAttribute
private String time
@XStreamAlias("content")
private String content
@XStreamAlias("user")
private String user
//省略geter、seter
}
然后写个工具类
import com.thoughtworks.xstream.XStream
import com.thoughtworks.xstream.io.xml.DomDriver
public class SerializeXmlUtil {
/**
* @param obj java对象实例
* @return String xml字符串
*/
public static String serializeToXml(Object obj) {
//XStream xstream = new XStream()
//直接用jaxp dom来解释
//XStream xstream=new XStream(new DomDriver())
//指定编码解析器,直接用jaxp dom来解释
XStream xstream=new XStream(new DomDriver("utf-8"))
//如果没有这句,xml中的根元素会是<包.类名>
//或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.processAnnotations(obj.getClass())
StringBuffer xmlstrbuf = new StringBuffer()
xmlstrbuf.append("<?xml version=\"1.0\"?>")
xmlstrbuf.append("\r\n")
xmlstrbuf.append(xstream.toXML(obj))
return xmlstrbuf.toString()
}
/**
* 将传入xml字符串转化为java对象
* @param xmlstr
* @param cls xml对应的class类
* @return T xml对应的class类的实例对象
* 调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr, PersonBean.class)
*/
public static <T> T deSerizalizeFromXml(String xmlstr, Class<T> cls) throws Exception {
//注意:不是new Xstream()否则报错:java.lang.NoClassDefFoundError:
//org/xmlpull/v1/XmlPullParserFactory
XStream xstream = new XStream(new DomDriver())
xstream.processAnnotations(cls)
T obj = (T) xstream.fromXML(xmlstr)
return obj
}
}
1、创建pojo类(在一对多关联关系中,应该在“一”这端的pojo有一个“多”这一端的引用,而多这端有一这端的集合引用(即聚合关联)2、创建pojo对应的数据库表,并插入数据
3、在ibatis配置文件中配置pojo类(配置方法:SqlMappingConfig.xml文件中添加如<typeAlias alias="Key" type="com.longsky.ibatis.lock.model.Key"/>配置,下文会看到。)
4、在pojo对应的xml配置文件中配置resultMap,比如在Lock.xml文件中添加
<resultMap id="LockResult" class="Lock">
<result property="id" column="id"/><result property="lockName" column="lockName"/>
<result property="keys" column="id" select="getKeysByLockId"/>
</resultMap>
5、在需要级联查询的查询语句中使用resultMap,比如
<select id="selectAllLocks" resultMap="LockResult">
<![CDATA[
select id,lockName from lock
]]>
</select>
一个简单的示例,我们给Person类定义age和name两个属性,然后在spring配置文件中通过属性注入值。Person类的定义如下:
package
cn.outofmemory.spring
public
class
Person
{
private
String
name
private
int
age
public
String
getName()。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)