从运用角度来理解newxy的DAO类update方法

 
从运用角度来理解 newxy DAO update 方法
胡立新
关于 newxy DAO update 是更新还是插入,文档中有说明。在此谈运用中的一些情况:
    1、jsp面表上有表单......,但之前没有经查询或其它方法得到formBean。这时标签会实例化一个formBean。由于没有数据,用户看到的是空白页,填入数据后,update作插入操作,这是因为主关键字值为空,除非用户显式地赋给主关键字值存在于表中。
    2、用户点击了“新建”铵钮, 会将formBean的HashMap类型的values清空(除保留属性),表单值均来源于此values,随后的表单显示的也是空白页。update后作插入操作,除非用户显式地赋给主关键字值存在于表中。
    3、用户点击了“编辑”(文字可设)铵钮,会将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)方法仍然作更新操作。
 
newxy新坐标技术网站: http://www.newxy.net
 
 

你可能感兴趣的:(从运用角度来理解newxy的DAO类update方法)