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 閱讀(432)
評論(0) 編輯 收藏 所屬分類:
JAVA小結