从运用角度来理解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后作更新操作。
付: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
posted on 2007-04-13 23:53
newxy新坐标 阅读(979)
评论(0) 编辑 收藏