程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 從運用角度來理解newxy的DAO類update方法

從運用角度來理解newxy的DAO類update方法

編輯:關於JAVA
關於newxy的DAO類update是更新還是插入,文檔中有說明。在此談運用中的一些情況:
    1、JSP面表上有表單<nhtml:form ...>...</nhtml:form>或<html:form ...>...</Html:form>,但之前沒有經查詢或其它方法得到formBean。這時標簽會實例化一個formBean。由於沒有數據,用戶看到的是空白頁,填入數據後,update作插入操作,這是因為主關鍵字值為空,除非用戶顯式地賦給主關鍵字值存在於表中。
    2、用戶點擊了“新建”铵鈕,<logic:action1/>會將formBean的HashMap類型的values清空(除保留屬性),表單值均來源於此values,隨後的表單顯示的也是空白頁。update後作插入操作,除非用戶顯式地賦給主關鍵字值存在於表中。
    3、用戶點擊了“編輯”(文字可設)铵鈕,<logic:action1/>會將formBean中選定的那條記錄put入formBean的values中,用戶看到的表單中是這條記錄數據,其中包含了主關鍵字屬性值對。update後作更新操作。
    
 
付:DAO類update方法 (摘自《DAO類+通用持久類,實現數據增、刪、改、查》):
newxy(新坐標)在設計數據插入與更新的方法時采用了Delphi及C++Builder數據更新策略,DataSet有個方法ApplyUpdates,如果是在組件中新增一行,作插入操作,如果是對組件中某條記錄數據更改,作更新操作。newxy(新坐標.Net.newxy.dbm.DBM有個update(Object dto)方法,如果持久類對象不含主關鍵字段值,或所含主關鍵字段值在表中已存在,作插入操作,如果含有的主關鍵字段值表中已存在,作更新操作。
1.數據插入:Object update(Object dto) throws Exception;
舉例:
    try{.Net.newxy.dbm.BaseDAO dao=new.Net.newxy.dbm.BaseDAO();.Net.newxy.dbm.DynaDto dynaDto=new.Net.newxy.dbm.DynaDto();
        dynaDto.set_table("table1");//設置表名
        dynaDto.set(“field1”,”……”);//為字段fIEld1賦值
        dynaDto.set(“field2”,”……”);//為字段fIEld2賦值
        Object result=dao.update(dynaDto);
    }catch(Exception e){
        ......
}
例中兩字段field1、fIEld2不是主關鍵字段,不用設置主關鍵段值,主關鍵字段值會自動得到,是原有最大值加一。
如果設置主關鍵字段值,如:dynaDto.set(“id”,”100”);newxy(新坐標)會檢查賦給的主關鍵字值是否已存在,如果存在,作更新(update)操作,如果不存在,作插入(insert)操作。
判斷是更新還是插入操作,可以根據返回的result值來判斷,如果result值為空,是作更新操作,如果result不空是作插入操作。
Object result=dao.update(dynaDto);
如果想需要知道自動賦給的主關鍵字段值,可以用如下方法:
        Object result=dao.update(dynaDto);
        Object idValue=null;
        If(result!=null)
idValue=((DynaDto)result).get(“id”);
            idValue就是自動賦給的主關鍵字段值。
2.數據更新:
    try{.Net.newxy.dbm.BaseDAO dao=new.Net.newxy.dbm.BaseDAO();.Net.newxy.dbm.DynaDto dynaDto=new.Net.newxy.dbm.DynaDto();
        dynaDto.set_table("table1");//設置表名
        dynaDto.set(“id”,”……”);//為主關鍵字段賦值
        dynaDto.set(“field1”,”……”);//為字段fIEld1賦值
        dynaDto.set(“field2”,”……”);//為字段fIEld2賦值
        Object result=dao.update(dynaDto);
    }catch(Exception e){
        ......
}
與數據插入相比增加了dynaDto.set(“id”,value),作用是為主關鍵字段賦值。
需注意:如果dynaDto.set(“id”,value)賦給的value在數據庫表中已存在,dao.update(dynaDto)方法仍然作更新操作。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved