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

 
从运用角度来理解 newxy DAO update 方法
关于 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后作更新操作。
   
 
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
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值