WebLogic Workshop 8.1專欄 從資料庫控制項返回XMLBeans 作者:Steve Hanson

標題:WebLogic Workshop 8.1專欄 從資料庫控制項返回XMLBeans
2004-03-03
作者:Steve Hanson

服務,因為SOAPIterator層之前這些資料物件總是被關閉掉。

要想學習從資料庫控制項返回XMLBeans 的更多內容, 下載本文附帶的補充資源(1.69 MB)。

那麼,哪種資料類型能夠被Web元件同時廣泛使用呢?有兩種資料類型符合要求:自定義JavaXMLBeans。下面這篇文章向你展示了如何建立能夠提供XMLBeans類型資料的資料庫控制項。把資料庫資料轉換成XMLBeans有兩個主要優點:(1XMLBeans可被所有Workshop元件使用;(2XMLBeans格式的資料非常靈活而且易於處理。

我將從解釋XMLBeans是什麼開始,接著描述如何建立可向使用者端返回XMLBeans類型的資料庫控制項。注意,有一個名叫XMLBeans_DatabaseControl的夥伴示例專案。此夥伴專案包含可返回XMLBeans資料類型的示例資料庫控制項。

XMLBean 是什麼?

XMLBean是一個附帶Java APIXML檔案。此API用於在XML檔案中解析和運算元據。典型的XMLBean可以用以下形式表示資料庫資料。

<!DOCTYPE XCustomer>

<XCustomer xmlns="java:///database/customer_db"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <XCustomerRow>

        <CUSTID>1</CUSTID>

        <NAME>Fred Williams</NAME>

        <ADDRESS> 123 Slugger Circle </ADDRESS>

    </XCustomerRow>

    <XCustomerRow>

        <CUSTID>2</CUSTID>

        <NAME>Marnie Smithers</NAME>

        <ADDRESS> 5 Hitchcock Lane </ADDRESS>

    </XCustomerRow>

    <XCustomerRow>

        <CUSTID>3</CUSTID>

        <NAME>Bill Walton</NAME>

        <ADDRESS>655 Tall Timbers Road </ADDRESS>

    </XCustomerRow>

</XCustomer>

 

XMLBeanAPI,,假定表示上述檔案中Fred Williams

String name = custBean.getXCustomer().getXCustomerRowArray(1).getNAME();

更新資料庫控制項以返回XMLBean而不是返回RowSetResultSetIterator,並沒有什麼限制。這不是ResultSetIterator層類(Web格式的資料也非常容易操作,的API

schema

使用XMLBean類的第一步是從可生成的XMLBean類建立一個schema。為資料庫控制項建立的schema必須能夠對從資料庫返回的各種資料進行建模。

如果你在編寫自己的schema ,至少,schema 的元素應具有與資料庫中的欄位相同的名稱,這允許從資料庫返回的資料能夠自動對應到XMLBean

要為資料庫或RowSet控制項自動生成schema ,可遵照以下過程。

1  Design View中顯示資料庫控制項檔。

2  選擇一種從資料庫返回資料的方法(不返回資料的方法,比如CREATE TABLE語句,將無法工作。)

3  選項卡中標有sql的屬性。

4  的一部分,並且將從這個schema 派生出XMLBeanEditor RowSet Schema文本(該對話方塊不支援滑鼠的右擊操作,你必須用Ctrl+C來複製schema 注意,Xcustomer中的兩個位置處:

<xsd:element name=XCustomer”…

<xsd:element name=XCustomerRow>

6  文本保存到Schemas檔中。務必確保此XSD開始。

檔時,生成的XMLBean類型可用資料庫控制項中的方法來返回。XMLBean類將顯示在Schema專案的XML Bean Classes檔夾內。

編輯schema 以建立新的“Document”類型

注意,僅有一種生成的類型是"Document"XMLBean類型:XcustomerDocument。其他的類型,XCustomerDocument.XCustomer XCustomerDocument.XCustomer.XcustomerRow,只能用來引用"Document"類型。這個區別尤其重要,因為只有"Document"類型才有資格直接參到業務流程中,或者被傳送到Web服務。出於這個原因,你可能希望修改你的schema 使其納入"檔案"類型,以便和schema 中的其他類型對應,特別是在你擁有一個非常龐大的schema ,該schema 帶有根據單個的"Document"類型定義的多個嵌套類型時,更是如此。

要為給某些元素生成一個新的Document類型,移動這個元素以便使其成為schema 中的頂層元素。在下面的示例中,XcustomerRow元素被移到了方案的頂層:它的初始位置已經被一個引用元素:<xsd:element ref="XCustomerRow"/>所代替。

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema targetNamespace="java:///database/customer_db"

xmlns="java:///database/customer_db"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:wld="http://www.bea.com/2002/10/weblogicdata"

elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xsd:element name="XCustomer"

        wld:DefaultNamespace="java:///database/customer_db" wld:RowSet="true">

     <xsd:complexType>

      <xsd:choice maxOccurs="unbounded">

       <xsd:element ref="XCustomerRow"/>

      </xsd:choice>

     </xsd:complexType>

    </xsd:element>

    <xsd:element name="XCustomerRow">

      <xsd:complexType>

        <xsd:sequence>

  <xsd:element name="CUSTID" type="xsd:int" wld:JDBCType="INTEGER"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

  <xsd:element name="NAME" type="xsd:string" wld:JDBCType="VARCHAR"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

  <xsd:element name="ADDRESS" type="xsd:string" wld:JDBCType="VARCHAR"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

  <xsd:element name="CITY" type="xsd:string" wld:JDBCType="VARCHAR"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

  <xsd:element name="STATE" type="xsd:string" wld:JDBCType="CHAR"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

          <xsd:element name="ZIP" type="xsd:string" wld:JDBCType="VARCHAR"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

  <xsd:element name="AREA_CODE" type="xsd:string" wld:JDBCType="CHAR"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

  <xsd:element name="PHONE" type="xsd:string" wld:JDBCType="CHAR"

         minOccurs="0" wld:TableName="WEBLOGIC.CUSTOMER" nillable="true">

         </xsd:element>

        </xsd:sequence>

        <xsd:anyAttribute namespace="http://www.bea.com/2002/10/weblogicdata"

        processContents="skip"></xsd:anyAttribute>

      </xsd:complexType>

    </xsd:element>

</xsd:schema>

 

,檔案“:XCustomerDocument XMLBean類型

一旦你生成了用於類比資料庫資料的XMLBean類型,你就能將這些類型匯入到你的資料庫控制項中。

    import databaseCustomerDb.XCustomerDocument;

    import databaseCustomerDb.XCustomerDocument.XCustomer;

    import databaseCustomerDb.XCustomerDocument.Factory;

XMLBean類型能夠從控制項的方法中返回。

    /**

     * @jc:sql statement="SELECT custid, name, address FROM customer"

     */

     public XCustomerDocument findAllCustomersDoc();

從查詢中返回的資料將自動對應到XMLBean中,因為資料庫欄位的名稱和XMLBean的欄位匹配。

相關主題

· Java Types Generated from User-Derived Schema Types

· @jc:sqlAnnotation

你可能感兴趣的:(weblogic)