您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > RCP开发技术培训2
RCP项目开发技术培训1目录一、培训对象内容与目的二、数据的查询三、增删改查的方法以及实体的状态四、常用控件补充说明五、代码操作与演示六、讨论与提问2培训对象内容与目的对象:针对新进员工尤其是RCP项目员工,进行常用技术培训。内容:数据的增删改查方法,结合控件的使用,演示开发流程,与增删改查操作。目的:帮助新进员工尽快掌握平常项目进行中,所使用的常用技术,做到尽快上手,提高开发效率。3查询数据4查询数据在客户端查询数据时,应熟练掌握QueryInfo,Field,QueryHandle等类的使用,同时可结合QueryComposite面板构建QueryInfo,同时可使用PagedTable(分页表格控件)实现分页功能。下面将一一讲解每个类的使用方法。5QueryInfoQueryInfo用于封装查询信息,包括查询实体,查询条件,以及分页信息等内容。常用方法介绍:构造方法:newQueryInfo(Classclass)可直接在构造方法中指定需要查询的实体。setQueryObject(Classclass):指定需要查询的实体,与构造方法等同。setListType(Stringarg0):指定查询返回数据集的类型,是以List形式返回,或者以Page分页形式返回,值LISTTYPE_LIST/LISTTYPE_PAGE。6QueryInfo常用方法addField(Fieldfield):添加一个查询条件,参数为一个Field查询条件对象。setOrderByProps(Mapmap):添加查询时的排序功能,参数为一个Map,Key值为用于排序的字段,Value值为排序规则升序/降序,QueryInfo.ORDERBY_ASC/QueryInfo.ORDERBY_DESC。setPageSize(intsize):分页查询时设置每页的最大记录数,此时,需要将setListType(Stringarg0)设置为QueryInfo.LISTTYPE_PAGE,下同。setPageStart(intstart):分页查询时设置查询哪一页的数据。7QueryInfo常用方法setWhereCondition(Stringarg0):由于QueryInfo只支持与查询,添加Field时,只是将每个Field做了与处理,但是当需要进行或查询时,就需要用到setWhereCondition(Stringarg0)方法,该方法的使用,是将或条件自己构造成字符串,后传入该方法,程序将在后台处理或条件。8FieldField类用于封装查询条件,将查询条件的各个要素封装在类属性中,最终需添加进QueryInfo中。下面介绍Field类的主要方法:构造方法:newField(Stringfield),参数为实体属性。setFieldName(Stringarg0):设置查询条件对应的实体属性,与构造方法一致。setCondition(Sringarg0):设置查询规则,默认为等于,并可设置模糊查询。9FieldsetFieldValue(Objectarg0):设置查询条件中的值。setFieldParam(Stringarg0):为查询条件设置一个别名,当两个查询条件对应一个实体属性时,需设置该属性,比如当查询某个时间属性从某个时间点到另一个时间点时,需构建两个Field查询条件,两个Field查询条件都需要设置别名。setFromAssociateCollection(Stringarg0):用于设置关联查询,当实体之间存在关联关系时,查询主表,可通过该方法,设置根据子表中的查询条件,查询主表。10QueryHandleQueryHandle类中,封装了执行查询的各种方法,需要根据不同的情况决定执行何种查询。下面就不同的方法做相应的介绍:findByQuery(QueryInfoinfo,ListinitProps):执行查询,参数为一个QueryInfo,一个initProps,initProps可指定需加载的子表,由于该方法需要一个QueryInfo作为入参,而QueryInfo可以设置诸如分页,以及排序等信息,因此该查询功能较为强大。11QueryHandlefindByProperty(Classclazz,MappropertyValues):执行查询,clazz为查询的实体,propertyValues封装每个查询条件,Key值为实体属性,Value值为对应的值,请注意,这里的条件并不像QueryInfo能设置不同的条件,诸如大于,小于等,只能设置简单的等于条件。findByProperty(Classclazz,Stringproperty,Objectvalue):clazz为查询的实体,property为实体所对应的属性,value为属性对应的值,该方法只能设置一个查询条件。12QueryHandleload(Classclazz,Stringid):根据主键值读取某一实体。loadAll(Classclazz):将某一实体的所有记录一并读出,注意,当表记录数据量大时,不建议采用该方法查询。用load方法读取数据时,如果数据不存在程序会抛出异常,因此使用时需要加异常处理,一般情况下,查询数据应该用前面介绍的方法查询,不建议采用load方法。13增删改操作服务端代码生成器生成步骤:1.在gerenate.xml文件中配置需生成服务端代码的实体。2.手动删除C盘根目录下的generator文件夹(如果存在的话)3.执行com.gemship.tools包下的Gerenator类4.程序将根据gerenate.xml文件中配置的实体,生成该实体对应的服务端代码,生成的代码存放在C盘根目录下的generator文件夹中,只需将代码拷贝至相应位置即可。14增删改操作执行增,删,改操作时,需要在客户端对实体设置相应的状态,程序将在服务端执行时,自动判断实体的状态,执行相应的增删改操作。子表可以单独保存,也可以由主表级联保存,此时,需要将主表设置为修改状态。请注意:在实体保存后,程序需接收最新的实体,下次保存时,应该用最新的实体保存。15增删改操作实体中的状态:BaseObject.ROWSTATUS_ADDED:新增状态,当实体新增时,需要对实体设置该状态。BaseObject.ROWSTATUS_MODIFIED:修改状态,当需要对实体进行修改保存时,需要对实体设置该状态。BaseObject.ROWSTATUS_DELETED:删除状态,需要对实体进行删除操作时,需要对实体设置该状态。BaseObject.ROWSTATUS_UNCHANGED:数据刚初始化时的状态,即刚从数据库中加载出时的状态。16实体中的状态BaseObject.ROWSTATUS_UNCHANGED:数据刚初始化时的状态,即刚从数据库中加载出时的状态。17Spring中的事务配置propertyname=transactionAttributespropspropkey=add*PROPAGATION_REQUIRED/proppropkey=update*PROPAGATION_REQUIRED/proppropkey=import*PROPAGATION_REQUIRED/proppropkey=remove*PROPAGATION_REQUIRED/proppropkey=saveOrUpdate*PROPAGATION_REQUIRED/proppropkey=txRequired*PROPAGATION_REQUIRED/proppropkey=txNew*PROPAGATION_REQUIRES_NEW/proppropkey=txSupport*PROPAGATION_SUPPORTS/proppropkey=txReadOnly*PROPAGATION_REQUIRED,readOnly/proppropkey=import*PROPAGATION_REQUIRED/proppropkey=*PROPAGATION_SUPPORTS/prop/props/property18带联想功能下拉列表MapCustomerCombo:创建一个带联想功能的下拉列表。该控件继承自CustomerCombo类,对CustomerCombo进行了扩展,他们之间的关系类似于MapAutoSelectCombo与AutoSelectCombo。与MapAutoSelectCombo的区别:MapAutoSelectCombo只能从左到右的联想,即按照所输入的字母依次进行联想,而MapCustomerCombo能做到全联想,即只要字符串存在,不管出现在什么位置,都能自动关联。构造函数:newMapCustomerCombo(parent,SWT.BORDER)。主要方法:setMap(Mapmap),用于设置下拉列表的值。19进度条制作一个能反映真实进度情况的进度条:即进度的情况与真实的执行情况一致的进度条。样式:20进度条新建类实现org.eclipse.jface.operation.IRunnableWithProgress接口。实现其中的run(IProgressMonitormonitor)方法。monitor对象:进度条主要通过monitor对象控制进度情况,主要的方法有:monitor.beginTask(StringtaskName,inttaskSize),其中,taskName指定了进度条中,显示的文字,taskSize为总任务数。monitor.worked(intwork),该方法指定已完成的任务数,参数即为执行完的任务数。执行任务:ProgressMonitorDialog.run()。•谢谢
本文标题:RCP开发技术培训2
链接地址:https://www.777doc.com/doc-3376613 .html