隨筆-23  評論-6  文章-1  trackbacks-0

          1.運行環境:
          JDK,ORACLE9i以上,CASTOR包。建議使用JBUILDE
          工具進行開發
          2.使用環境:
          采用ORM(關系對象映射)操作數據庫數據,適用于Application與WEB方式下的開發。

          3.功能:
              提供查詢,更新,刪除,插入(沒實現主鍵自動生成),(分頁暫時沒實現)。4.使用步驟:
          首先在數據庫建立一個cat表,字段為cat_id;name;sex;weight;類型1,4為數字型,2,
          3為字符串型。

          其次建立兩個配置文件(由自己定義文件名稱):
          repository.xml配置信息:
          <?xml version="1.0" encoding="UTF-8"?>
          <Repository>
           <TableDesc execid="CAT" identifyField="CAT_ID">
            <table>CAT</table>
            <condition />
           <FieldDesc name="CAT_ID" fieldType="java.lang.String" >
            <title>CAT_ID</title>
            </FieldDesc>
           <FieldDesc name="NAME" fieldType="java.lang.String" >
            <title>NAME</title>
            </FieldDesc>
           <FieldDesc name="SEX" fieldType="java.lang.String" >
            <title>SEX</title>
            </FieldDesc>
           <FieldDesc name="WEIGHT" fieldType="java.lang.Long" >
            <title>WEIGHT</title>
            </FieldDesc>
            </TableDesc>
          </Repository>
          配置文件的設計說明如下:
          TableDesc 表示一個表的聲明。
          Execid 是類名一般情況下最好和表名一致(容易找到對應關系),但是不允許有下劃線出現。注意這個類名不是全路徑。
          DentifyField 表中的主鍵,如果是復合主鍵則以逗號相隔開
          Table 數據庫表名
          <FieldDesc name="SEX" fieldType="java.lang.String" >
            <title>SEX</title>
            </FieldDesc>
          這里是表中字段的描述,name是字段名。 fieldType 是數據庫字段對
          應java中的類型,只有4中類型可填充:java.lang.String,
          java.lang.Long, java.util.Date, java.lang.Double
          title可要可不要.如果存在多個表,那么就在</TableDesc>和
          </Repository>之間加入表描述。

          pool-config.xml配置信息:
          <?xml version="1.0" encoding="GB2312"?>
          <ResourceParams>
          <maxActive>10</maxActive>
          <maxIdle>5</maxIdle>
          <maxWait>10000</maxWait>
          <username>test</username>
          <password>test</password>
          <driverClassName>oracle.jdbc.driver.OracleDriver</driverClassName>
          <url>jdbc:oracle:thin:@192.168.0.90:1521:forecast</url>
          <removeAbandoned>true</removeAbandoned>
          <removeAbandonedTimeout>60</removeAbandonedTimeout>
          <logAbandoned>true</logAbandoned>
          </ResourceParams>
          把上述信息保存為XML文件。對這個文件不多做說明了。

          確定兩個文件已經存在,接下來就是要創建表CAT。
          還有表所對應的BEAN。
          下面是我在Hibernate的一個例子中建立的VO。(借用)
          package com.cea.boat.dao;
            import java.util.*;
            public class Cat implements Cloneable  {
              //Declare Field
              private java.lang.String  catId;
              private java.lang.String  name;
              private java.lang.String  sex;
              private java.lang.Long  weight;
              //Get Method
              public java.lang.String getCatId() {
                 return catId;
              }
              public java.lang.String getName() {
                 return name;
              }
              public java.lang.String getSex() {
                 return sex;
              }
              public java.lang.Long getWeight() {
                 return weight;
              }
              //Set Method
              public void setCatId(java.lang.String catId) {
                 this.catId=catId;
              }
              public void setName(java.lang.String name) {
                 this.name=name;
              }
              public void setSex(java.lang.String sex) {
                 this.sex=sex;
              }
              public void setWeight(java.lang.Long weight) {
                 this.weight=weight;
              }
            public Object clone() {
              Object o = null;
              try {
                o = super.clone();
              }
              catch (CloneNotSupportedException ex) {
                System.out.println(o);
              }
              return o;
            }
            public boolean equals(Object obj) {
              Cat o = (Cat)obj;
              boolean result = true
                  && (catId == o.catId || catId.equals(o.catId))
                  && (name == o.name || name.equals(o.name))
                  && (sex == o.sex || sex.equals(o.sex))
                  && (weight == o.weight || weight.equals(o.weight))
              ;
              return result;
            }
            }
          到此已經完成了該做的事了,下面是一個使用的例子。

          l查詢方式:
          例子:
          Void testQuery() throws Exception{
              {
          System.setProperty(Const.RUN_KEY, Const.POOL_FACTORY_KEY);
                System.setProperty(Const.CONFIG_PATH,
                                   "E:/project/CEAConnection/pool-config.xml");
                System.setProperty(Const.REPOSITORY_CONFIG_PATH,
                                   "E:/project/CEAConnection/repository.xml");
          }

          ConnectionManage connectionManage = new ConnectionManage();
           connectionManage.activity("com.cea.boat.dao.Cat cat");
            
             Query Query=connectionManage.createQuery(“cat. Catid=’1’ ”);
              while (Query.hasNext()) {
                Object[] objects = Query.next();
                Cat cat = (Cat) objects[0];
              }
           connectionManage.close();
          }
          說明:
          在WEB中使用只需要在網站啟動時聲明一次即可。
          {
          //指明使用連接池
          System.setProperty(Const.RUN_KEY, Const.POOL_FACTORY_KEY);
          //連接池參數配置文件
                System.setProperty(Const.CONFIG_PATH,
                                   "E:/project/CEAConnection/pool-config.xml");
          //配置文件指定
                System.setProperty(Const.REPOSITORY_CONFIG_PATH,
                                   "E:/project/CEAConnection/repository.xml");
          }

             聲明一個連接管理者,管理數據庫資源,事務的起始,它的生命周期最好是在一個事務結束就完結,當然你也可以在這個事務完結時繼續用這個實例,來創建下一個事務的開始。不建議如此使用。
              ConnectionManage DataManage = new ConnectionManage();
             
          激活要使用類(在配置中必須有Cat),類名為全路徑如果要使用多個對象,則對象間要用逗號相隔開
          connectionManage.activity("com.cea.boat.dao.Cat cat");

          這里只需要給出SQL查詢條件比如SQL中是select * from cat cat where cat.Catid=‘1’那么 select * from cat cat where 這里后臺已經幫你完成,你需要做的就是把條件完成,如果沒有條件則為空.
          Query Query = connectionManage.createQuery(“cat. Catid=’1’ ”);


             Query.hasNext()的作用相當于resultset.next()查看是否還存在記錄,Query.next()返回一個對象數組這里如果activity的是多個對象,那么objects里會順序的存儲相應的對象實例,使用的時候強制轉化就可以了。
          while (Query.hasNext()) {
                Object[] objects = Query.next();
                Cat cat = (Cat) objects[0];
            }

          使用完畢,釋放使用的數據庫資源
           connectionManage.close();

          l新增方式:
            由于沒有主鍵自動生成,因此主鍵暫時只能由自己來維護,要保證catid為111的在表里不存在,否則會出現異常。
          Void testInsert() throws Exception{
          Cat cat = new Cat();
          cat. setCatId(“111”);
              cat. SetSex(“F”);
              cat. setName(“catm”);
              ConnectionManage cm = new ConnectionManage();
              cm.create(cat);
              cm.commit();
          cm.close();
          }

          l更新方式:
          表里已經存在catid為111的貓,否則查不到這條記錄就更新不了信息
          Void testUpdate() throws Exception{
          Cat cat = new Cat();
          cat. setCatId(“111”);
              cat. SetSex(“F”);
              cat. setName(“catmm”);
              ConnectionManage cm = new ConnectionManage();
              cm.update(cat);
              cm.commit();
          cm.close();
          }

          l刪除方式:
          刪除方式比較簡單,只要給出對象,并且主鍵值不為空,就可以刪除表中記錄。
          Void testDelete() throws Exception{
          Cat cat = new Cat();
          cat. setCatId(“111”);
              ConnectionManage cm = new ConnectionManage();
              cm.delete(cat);
              cm.commit();
          cm.close();
          }

          posted on 2005-09-15 23:41 ceaboat 閱讀(438) 評論(0)  編輯  收藏 所屬分類: JAVA小結
          主站蜘蛛池模板: 玉田县| 岚皋县| 巫山县| 唐海县| 灌云县| 安化县| 启东市| 贵溪市| 双城市| 浪卡子县| 上蔡县| 大城县| 金沙县| 乌兰察布市| 左云县| 浠水县| 安多县| 读书| 依安县| 株洲县| 保靖县| 北碚区| 遂宁市| 尼玛县| 黔西县| 武隆县| 上蔡县| 萨迦县| 马关县| 大邑县| 文登市| 武义县| 东港市| 永仁县| 竹山县| 太原市| 武隆县| 武清区| 南充市| 和龙市| 海原县|