<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0

    [1]表結構
    ? CREATE TABLE "POI_BEIJING"."XML_TEST"
    ?? (?
    ??? "ITEM_ID" NUMBER(10,0) NOT NULL ENABLE,
    ??? "ITEM_NAME" VARCHAR2(255 BYTE),
    ??? "ITEM_VALUE" "SYS"."XMLTYPE" ,
    ??? }
    [2]自定義類型(參考網上資料)
    參考了此老兄的思路http://blog.csdn.net/wmbb/archive/2006/08/10/1045742.aspx
    package com.csc.poimanager.dao.type;
    import java.io.Serializable;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import oracle.jdbc.driver.OracleResultSet;
    import oracle.sql.OPAQUE;
    import org.hibernate.HibernateException;
    import org.hibernate.usertype.UserType;
    public class PoiAdditionalXmlType implements UserType, Serializable {
    ??? private static final Class returnedClass = String.class;
    ??? private static final int[] SQL_TYPES = new int[] { oracle.xdb.XMLType._SQL_TYPECODE };
    ??? public int[] sqlTypes() {
    ??? ??? return SQL_TYPES;
    ??? }
    ??? public Class returnedClass() {
    ??? ??? return returnedClass;
    ??? }
    ??? public boolean equals(Object arg0, Object arg1) throws HibernateException {
    ??? ??? if (arg0 == null || arg1 == null) {
    ??? ??? ??? throw new HibernateException("None of the arguments can be null.");
    ??? ??? }
    ??? ??? if (arg0 instanceof oracle.xdb.XMLType
    ??? ??? ??? ??? && arg1 instanceof oracle.xdb.XMLType) {
    ??? ??? ??? return arg0.equals(arg1);
    ??? ??? }
    ??? ??? return false;
    ??? }
    ??? public int hashCode(Object arg0) throws HibernateException {
    ??? ??? return 0;
    ??? }
    ??? public Object nullSafeGet(ResultSet rs, String[] names, Object arg2)
    ??? ??? ??? throws HibernateException, SQLException {
    ??? ??? OracleResultSet ors = (OracleResultSet) rs;
    ??? ??? OPAQUE op = ors.getOPAQUE(names[0]);
    ??? ??? oracle.xdb.XMLType xt = oracle.xdb.XMLType.createXML(op);
    ??? ??? return xt.getStringVal();
    ??? }

    ??? public void nullSafeSet(PreparedStatement st, Object value, int index)
    ??? ??? ??? throws HibernateException, SQLException {
    ??? ??? Connection conn = st.getConnection();
    ??? ??? OPAQUE aClob = oracle.xdb.XMLType.createXML(conn, (String) value);
    ??? ??? st.setObject(index, aClob);
    ??? }

    ??? public Object deepCopy(Object value) throws HibernateException {
    ??? ??? return value;
    ??? }
    ??? public boolean isMutable() {
    ??? ??? return false;
    ??? }
    ??? public Serializable disassemble(Object arg0) throws HibernateException {
    ??? ??? return null;
    ??? }
    ??? public Object assemble(Serializable arg0, Object arg1)
    ??? ??? ??? throws HibernateException {
    ??? ??? return null;
    ??? }
    ??? public Object replace(Object arg0, Object arg1, Object arg2)
    ??? ??? ??? throws HibernateException {
    ??? ??? return null;
    ??? }
    }

    [3]POJO
    package com.csc.poimanager.dao;
    import com.csc.poimanager.dao.type.PoiAdditionalXmlType;
    public class XmlTest implements java.io.Serializable {
    ??? private Long itemId;
    ??? private Long poiId;
    ??? private String itemName;
    ??? private String itemValue;
    ??? public XmlTest() {
    ??? }
    ??? public XmlTest(String itemName) {
    ??? ??? this.itemName = itemName;
    ??? }
    ??? public Long getItemId() {
    ??? ??? return this.itemId;
    ??? }
    ??? public void setItemId(Long itemId) {
    ??? ??? this.itemId = itemId;
    ??? }
    ??? public Long getPoiId() {
    ??? ??? return this.poiId;
    ??? }
    ??? public void setPoiId(Long poiId) {
    ??? ??? this.poiId = poiId;
    ??? }
    ??? public String getItemName() {
    ??? ??? return this.itemName;
    ??? }
    ??? public void setItemName(String itemName) {
    ??? ??? this.itemName = itemName;
    ??? }
    ??? public String getItemValue() {
    ??? ??? return this.itemValue;
    ??? }
    ??? public void setItemValue(String itemValue) {
    ??? ??? this.itemValue = itemValue;
    ??? }
    }

    [4]映射文件
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!--
    ??? Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
    ??? <class name="com.csc.poimanager.dao.XmlTest" table="XML_TEST">

    ??????? <id name="itemId" type="java.lang.Long">
    ??????????? <column name="ITEM_ID" precision="10" scale="0" />
    ??????????? <generator class="increment" />
    ??????? </id>

    ??????? <property name="poiId" type="java.lang.Long">
    ??????????? <column name="POI_ID" precision="10" scale="0" />
    ??????? </property>

    ??????? <property name="itemName" type="java.lang.String">
    ??????????? <column name="ITEM_NAME" />
    ??????? </property>??? ??? ?

    ??????? <property name="itemValue" type="com.csc.poimanager.dao.type.PoiAdditionalXmlType" >
    ??????????? <column name="ITEM_VALUE" />
    ??????? </property>


    ??? </class>
    </hibernate-mapping>

    [5]查詢操作
    ??????? XmlTestDAO xtdao = new XmlTestDAO();
    ??? ??? Session sess = xtdao.getSession();
    ??? ??? Transaction tx = sess.beginTransaction();
    ??? ???
    ??? ??? XmlTest xt =xtdao.findById((long)1);
    ??? ???
    //??? ??? xtdao.save(xt);
    ??? ???
    ??? ??? System.out.println("xt item_value : " + xt.getItemName());
    ??? ??? System.out.println("xt item_value : " + xt.getItemValue());
    ??? ???
    ??? ???
    ??? ??? tx.commit();
    ??? ??? sess.close();
    ??? ???
    ??? ??? System.out.println("getting xmltest ok ");
    ?? 執行結果
    ??????? xt item_value : WIFI
    ??????? xt item_value : <?xml version="1.0"?>
    ??????????????????????????????? <wifi>Yes</wifi>
    ??????? getting xmltest ok


    [6]插入操作
    ?? ??? ??? XmlTestDAO xtdao = new XmlTestDAO();
    ??? ??? Session sess = xtdao.getSession();
    ??? ??? Transaction tx = sess.beginTransaction();
    ??? ??
    ? ? ? ? XmlTest xt =xtdao.findById((long)1);
    ?? ???? System.out.println("xt item_value : " + xt.getItemName());
    ??? ??? System.out.println("xt item_value : " + xt.getItemValue());
    ??? ??? tx.commit();
    ??? ??? sess.close();
    ??? ??? System.out.println("getting xmltest ok ");
    ? ? 執行結果:
    ? ? saving xmltest ok? ??

    [8]注意
    ?? (1)oracle的XmlType不是字符串,是oracle的一種數據類型,就像varchar一樣
    ?? (2)POJO中的itemValue類型是由你的自定義類解析后的對象類型
    ????? 比如上面的實現,是把XmlType對象解析成xml的串,是字符串類型。所以在POJO中的定義是String類型,而不是PoiAdditionalXmlTyp類型
    ?? (3)此處僅實現了把oracle中XmlType的值解析成string串,同時,可以把xml的string串保存到XmlType類型的字段里面


    ??


    |----------------------------------------------------------------------------------------|
                               版權聲明  版權所有 @zhyiwww
                引用請注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2008-12-25 15:43 zhyiwww 閱讀(2896) 評論(0)  編輯  收藏 所屬分類: j2eedatabase
    主站蜘蛛池模板: 免费人成在线观看网站视频| 免费看的黄色大片| 中文字幕在线亚洲精品| 美女无遮挡免费视频网站| 日韩高清免费在线观看| 久久亚洲欧美国产精品| 在线观着免费观看国产黄| 色www免费视频| 亚洲国产精品13p| 久久精品成人免费观看97| 亚洲AV综合色区无码一区爱AV| 91成人免费观看在线观看| 精品亚洲综合久久中文字幕| 中文字幕免费观看全部电影| 亚洲av无码国产精品色午夜字幕| 亚在线观看免费视频入口| 亚洲色图古典武侠| 女性自慰aⅴ片高清免费| 精品亚洲成A人在线观看青青 | 91久久精品国产免费一区| 91嫩草私人成人亚洲影院| 最近最新的免费中文字幕| 亚洲AV无码AV日韩AV网站| 婷婷综合缴情亚洲狠狠尤物| 中文字幕在线成人免费看| 亚洲女人18毛片水真多| 日韩免费观看视频| 2022国内精品免费福利视频| 亚洲人成网www| 日本无吗免费一二区| 成人自慰女黄网站免费大全| 久久精品国产亚洲av高清漫画| 女性无套免费网站在线看| 国产综合免费精品久久久| 亚洲制服丝袜精品久久| 亚洲无码高清在线观看| 69成人免费视频| 一级毛片免费视频网站| 亚洲国产精品成人综合色在线婷婷 | 亚洲精品在线免费看| 国产99视频精品免费视频7|