CMIS培训__信贷开发增删改查.docx

上传人:scccc 文档编号:13444689 上传时间:2021-12-26 格式:DOCX 页数:31 大小:1.12MB
返回 下载 相关 举报
CMIS培训__信贷开发增删改查.docx_第1页
第1页 / 共31页
CMIS培训__信贷开发增删改查.docx_第2页
第2页 / 共31页
CMIS培训__信贷开发增删改查.docx_第3页
第3页 / 共31页
CMIS培训__信贷开发增删改查.docx_第4页
第4页 / 共31页
CMIS培训__信贷开发增删改查.docx_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《CMIS培训__信贷开发增删改查.docx》由会员分享,可在线阅读,更多相关《CMIS培训__信贷开发增删改查.docx(31页珍藏版)》请在三一文库上搜索。

1、. 增删改查 CMIS信贷增删改查培训文档信息文档名称:CMIS_信贷开发增删改查文档版本:V1.0版本日期:2012-6-9起草人:徐凯希xukx起草日期:2012-6-9复审人:复审日期:版本历史版本修订日期修改人修改内容简述目录1概述31.1编写目的31.2背景31.3阅读对象32增删改查32.1关于增删改查的说明32.2在数据库里建表32.3将创建好的表映射成表模型72.4生成增删改查页面102.5增删改查页面介绍153结束201 概述1.1 编写目的本文档的目的是提供给信贷项目组的实施人员,利于他们更加快速的熟悉信贷系统开发。1.2 背景随着越来越多的新员工加入到宇信进入信贷项目组,

2、东部信贷业务部配套推出信贷系统的增删改查手册1.3 阅读对象Ø 宇信易诚所有员工Ø 使用宇信易诚的信贷风险管理系统的银行2 增删改查2.1 关于增删改查的说明2.1.1 增删改查的应用:增删改查是基本的开发模块,应用于系统的各个角落,如授信申请、贷款申请、客户信息等模块。首先是进入列表页面,选中一条记录,对该记录进行【查看】、【修改】、【删除】操作,也可直接进行【新增】操作。2.1.2 增删改查的原理:增删改查就是对数据库中的表进行的操作增:新增一条记录删:删除一条记录改:修改一条记录查:查看一条记录创建表模型是为了方便开发人员更快捷的开发系统。 2.2 在数据库里创建表2

3、.2.1 打开plsqlØØ 输入密码后,点击【确定】,进入plsqlØ2.2.2 创建表点击鼠标右键,然后点击【新增】,出现如下界面输入名称后,然后点击【列】,进入如下页面这样,在数据库中,表就创建完成。也可使用建表语句:create table TEST( SERNO VARCHAR2(20) not null, TEST1 VARCHAR2(20), TEST2 NUMBER(16,2);alter table TEST add constraint PK_TEST primary key (SERNO);2.3 将创建好的表,映射成表模型2.3.1 配置E

4、MP插件的数据源打开eclipse,进入如下页面在工程上点击右键:选择properties如下图:选中左侧的EMP IDE这个属性,点击【Set DB Access】这个按钮如下图:在这里配置EMP数据源。2.3.2 新建表模型点击,会弹出【EMP Explorer】、【EMP Table View】、【EMP Data View】三个界面,其中【EMP Table View】是通过数据源连接到数据库中物理表的界面,【EMP Data View】是用来查看报文字段,【EMP Explorer】用来配置实时接口报文及配置表模型等。 我们进入【EMP Table View】如下界面:点击【】,出现

5、如下见面:找到刚刚创建的表 test,如下图:找到test这张表后,拖入左侧的test文件夹中点击【ok】,进入如下页面点击【finish】,双击建好的表模型,进入如下见面2.3.3 修改表模型点击【字段定义】,进入如下见面:建表时如果有字段注释,这里就不需要手工修改表模型的中文名称了修改表模型中的字段的中文名称,并将serno字段作为有主键约束条件的字段。2.3.4 从表和子表的引用关系Ø I表引用关系定义字段属性定义2.4 生成增删改查页面将鼠标悬停在表模型上,点击【右键】,选择自动构造,如下图,增删改查页面已生成,然后刷新cmis-main这个工程,重启服务,增删改查页面就能访

6、问了.2.5 增删改查页面介绍2.5.1模型以数据库表为中心,进行表间关系分析;在此基础上抽象出单表模型、主从(一对一主键关联)表模型、主子(一对多外键关联)表模型。其他的表间关系,如多对一,多对多关系映射,本模型不予支持。2.5.1.1单表模型Ø 模型定义:对应一张简单的物理表,只对此表进行增、删、改、查操作Ø 数据结构:<KColl id=”表名”><Field id=”字段名” value=”值”><KColl>2.5.1.2主从表模型(1:1)Ø 模型定义:两张或两张以上的数据表,以其中一个表为中心,通过主键一对一关联其

7、他 表的模型,同时对这几张表进行同样的操作。Ø 数据结构:<KColl id=”主表名”><Field id=”字段名”><KColl id=”从表名”><Field id=”字段名”><KColl><KColl>2.5.1.3主子表模型(1:n)Ø 模型定义:一对一外键关联是指两表或多表各自有自己的主键,但其中的一个表有一 个字段保存了对方的主键。且带有外键关联的字段有唯一性约束Ø 数据结构:<KColl id=”主表名”><Field id=”字段名”><IC

8、oll id=”子表名”><KColl id=子表名”><Field id=”字段名”><KColl><IColl><KColl>2.5.2 DAO2.5.2.1 功能概述以表模型为中心,统一提供表模型相关的增、删、改、查操作功能,以达到简化、规范模型开发之目的。² 参数说明:ü keyedCollection:要插入的数据被封装为一个keyedCollection,根据keyedCollection的不同结构,决定具体执行哪些数据表的插入操作。 单表模型下:只往单表里面插入一条记录。 主从表模型下:往主表里

9、面插入一条记录,同时往从表里面插入一条记录。 主子表模型下:往主表里面插入一条记录,同时往子表里面插入多条记录。ü connection:数据库连接² 返回值 : 以主表执行的sql返回结果为准,成功返回1 or 未执行返回0。² 异常:EMPJDBCException。 2.5.2.2 接口设计2.5.2.2.1 添加1) insert功能描述:执行数据库插入操作参数:keyedCollection根据keyedCollection,决定具体执行那些数据表的插入操作connection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:public

10、 int insert(KeyedCollection keyedCollection,Connection connection) throws EmpJDBCException;2.5.2.2.2 删除2) deleteByPk功能描述:根据主键执行数据库删除操作参数:tableName数据表模型名pk数据表主键,根据tableName和pk,决定具体执行那个数据表的删除操作connection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:public int deleteByPk(String tableName,String pk,Connection, conne

11、ction) throws EmpJDBCException;3) deleteByPks 功能描述:根据联合主键删除单条记录, 根据tableName和pks,决定具体执行那个数据 表的删除操作参数:tableName数据表模型名pks数据表联合主键connection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:public int deleteByPks(String tableName,Map pks,Connection, connection) throws EmpJDBCException;4) deleteAllByPk功能描述:tableName 数据表名

12、,根据tableName和pk,决定具体执行那些数据表的删除操作单表模型下:只删除单表里面主键对应的一条记录主从表模型下:删除主表里面主键对应的一条记录,同时删除从表对应的一条记录主子表模型下:删除主表里面主键对应的一条记录,同时删除子表对应参数:tableName数据表模型名pk数据表主键connection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:public int deleteAllByPk(String tableName,String pk,Connection, connection) throws EmpJDBCException;5) deleteAl

13、lByPks功能描述:根据联合主键删除主表的单条记录及其下属的所有对应数据参数:tableName数据表模型名pks数据表联合主键connection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:public int deleteAllByPks(String tableName,Map pks,Connection, connection) throws EmpJDBCException; 2.5.2.2.3 更新6) update功能描述:根据传入KeyedCollection,执行数据库修改操作,具体执行那些数据表字段的修 改 操作,由 keyedCollection

14、来决定参数:keyedCollection需要更新的数据connection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:public int update(KeyedCollection keyedCollection,Connection, connection) throws EmpJDBCException;2.5.2.2.4 明细查询Ø 约束注意,根据功能讨论,在查询一对多模型时,有关子表的记录被一次性查出,不考虑过滤条件、过滤字段、分页翻页等。7) queryDetail功能描述:根据主键查询主表的明细参数:tableName 数据表名pk数据表主键c

15、onnection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:pubic KeyedCollection queryDetail(String tableName,String pk,Connecion connection) throws EmpJDBCException;8) queryDetail功能描述:根据联合主键查询主表的明细参数:tableName数据表名pks数据表联合主键Mapconnection数据库连接返回值:int 以主表执行的sql返回结果为准方法定义:pubic KeyedCollection queryDetail(String tableN

16、ame,Map pks,Connecion connection) throws EmpJDBCException;9) queryAllDetail功能描述:根据主键查询主表的明细及所有从属表的数据参数:tableName 数据表名pk数据表主键connection数据库连接返回值:KeyedCollection 拼装后的主表,从表,及子表的数据方法定义:pubic KeyedCollection queryAllDetail(String tableName,String pk,Connecion connection) throws EmpJDBCException;10) queryA

17、llDetail功能描述:根据主键查询主表的明细及部分从属表的数据参数:tableName 数据表名pk数据表主键tablaNames 需要查询的的从表或子表数据表名集合connection数据库连接返回值:KeyedCollection 拼装后的主表,从表,及子表的数据方法定义:pubic KeyedCollection queryAllDetail(String tableName,String pk,List tablaNames,Connecion connection) throws EmpJDBCException;11) queryAllDetail功能描述:根据主键查询主表的明

18、细及部分从属表的数据参数:tableName 数据表名pk数据表主键tablaNames 需要查询的的从表或子表数据表名集合conditionsconditions Map 结构 key=tableName, value=Mapkey=(conditionsType: where , pageInfo),value=值connection数据库连接返回值:返回KeyedCollection 拼装后的主表,部分从表、子表的数据方法定义:pubic KeyedCollection queryAllDetail(String tableName,String pk,List tablaNames,M

19、ap conditions ,Connecion connection) throws EmpJDBCException;12) queryAllDetail功能描述:根据联合主键查询主表的明细及所有从属表的数据参数:tableName 数据表名pks数据表联合主键connection数据库连接返回值:KeyedCollection 拼装后的主表的明细及所有从属表的数据方法定义:pubic KeyedCollection queryAllDetail(String tableName,Map pks,Connecion connection) throws EmpJDBCException;1

20、3) queryAllDetail功能描述:根据联合主键查询主表的明细及部分从属表的数据参数:tableName 数据表名pks数据表联合主键tablaNames从表名字listconnection数据库连接返回值:KeyedCollection 拼装后的主表的明细及部分从属表的数据方法定义:pubic KeyedCollection queryAllDetail(String tableName,Map pks, List tablaNames,Connecion connection) throws EmpJDBCException;2.5.2.2.5 列表查询Ø 约束查询列表时

21、,在列表中可以出现1-1关联表的从表字段,不会出现1-n关联表的子表字段。查询条件仅为主表字段。14) queryList功能描述:根据表名查询列表数据,返回全部列值参数:tableName要查询的表名connection数据库连接返回值 :返回 IndexedCollection拼装后的主表数据方法定义:pubic IndexedCollection queryList (String tableName, Connecion connection) throws EmpJDBCException;15) queryList功能描述:根据表名查询列表数据,根据columnNames来确定返回

22、哪些列。如果需要同 时列出主从表模型的从表数据,需要指定表名。 参数:tableName要查询的表名columnNames 需要查询的列connection数据库连接返回: IndexedCollection拼装后的columnNames部分主表,从表的数据方法定义:pubic IndexedCollection queryList (String tableName, List columnNames, Connecion connection) throws EmpJDBCException;16) queryList功能描述:根据表名和条件查询列表数据,返回全部列值参数: tableNa

23、me要查询的表名condition条件,where及后面的语句connection数据库连接返回值 :返回 IndexedCollection拼装后的主表数据方法定义:pubic IndexedCollection queryList (String tableName, String condition, Connecion connection) throws EmpJDBCException;17) queryList功能描述:根据表名查询列表数据,根据columnNames来确定返回哪些列,根condition 来确定查询条件。如果需要同时列出主从表模型的从 表数据,需要指定表名。 参

24、数:tableName要查询的表名columnNames 需要查询的列condition条件,where及后面的语句connection数据库连接返回值 :返回 IndexedCollection拼装后的columnNames部分主表,从表数据方法定义:pubic IndexedCollection queryList (String tableName, List columnNames, String condition, Connecion connection) throws EmpJDBCException;18) queryList功能描述:根据表名查询列表数据,根据columnN

25、ames来确定返回哪些列, 如果需要同 时列出主从表模型的从表数据,需要指定表名。根据condition来确定查询条。根据pageindex和pagesize来决定翻页。参数:tableName要查询的表名columnNames 需要查询的列Condition条件,键值对的形式,以逗号分割。pageInfo翻页信息 cnnection数据库连接返回值 :返回 IndexedCollection拼装后的columnNames部分主表,从表数据方法定义:pubic IndexedCollection queryList (String tableName, List columnNames, St

26、ring condition,int pageindex,int pagesize, Connecion connection) throws EmpJDBCException;2.5.2.3 实现说明public class TableModelDAO extends EMPService实现基类,提供针对表模型的增,删,改,查操作功能public class TableModelDAO4DB2 extends TableModelDAO继承TableModelDAO,实现针对Oracle的分页查询 public class TableModelDAO4Oracle extends Tabl

27、eModelDAO继承TableModelDAO,实现针对DB2的分页查询调用说明:Ø 在service.xml文件中申明tableModelDAO的具体实现类<TableModelDAOid="tableModelDAO" implClass="com.ecc.emp.dbmodel.service.TableModelDAO4Oracle" />Ø 在系统初始化的时候,加载该服务CMISInitializer装载所有的表模型Ø 在Operation中调用TableModelDAO dao = this.get

28、TableModelDAO(context);2.5.2.4 跨数据库支持Ø 表模型在设计阶段,已经考虑到了数据库的差异性,原则上讲,只要在TableModeDao的基础上,针对不同的数据库,通过子类扩展的方式实现其个性化,就可以解决在不同数据库间移植的问题Ø 但考虑到实现的复杂性,建议在数据库设计时,采用比较中立的数据类型,降低实施难度。2.5.3 主键处理数据库主键在整个系统中起着重要的作用,很多地方都要用到,牵扯范围很广,主键在数据库设计上可以分为单主键和联合主键单主键对主键的处理方式有如下三种:1. 数据库主键自增长型2. 主键生成机提供3. 用户提供Ø

29、不能设置主键为主键自增长我们的表模型开发的时候,需要根据主键做一些其他的工作,如果采用第一种方式,必然造成多查一次,所以我们摒弃了数据库主键自增长的类型,也就是说,在以表模型为基础做开发,建立数据库表的时候,不能设置主键为主键自增长。Ø 主键生成机提供在service.xml中,通过如下的方式声明主键生成机的实现类列表<PkGeneratorSet id="pkGeneratorSet" implClass="com.ecc.emp.dbmodel.pkgenerator.PkGeneratorSet"><PkGenerato

30、r id="timestamp" name="PkGenerator" implClass="com.ecc.emp.dbmodel.pkgenerator.TimeStampGenerator"/><PkGenerator id="SubUNID" implClass="com.yucheng.emp.srs.pkgenerator.SubUNIDGenerator"/></PkGeneratorSet>在TableModel的模型文件中,通过如下的方式声明具体调

31、用哪个主键生成机<Field id="id" isPK="true" columnName="id" pkGenerator="SubUNID" cnname="编号" length="10" JDBCType="CHAR" canBeNull="false"/>Ø 用户自己提供只需要符合数据库字段约束即可联合主键Ø 表模型支持联合主键,但有如下约束:不能把联合主键应用于主从(1:1)表模型中,在此模型必

32、须是单主键的主键关联主子(1:n)的子表模型中,可以使用联合主键,但必须是通过外键的方式和主表的有唯一性约束的字段建立关联,且只能有一个关联关系。Ø 处理方式可以把联合主键中的某个字段做为单主键的方式来应用主键生成机产生。2.5.4 数据加密针对一些客户可能需要对数据库中数据以加密方式来存储的需求,提供字段加密服务:Ø 在service.xml文件中申明tableModelDAO加密处理的具体实现类<TableModelDAOid="tableModelDAO" implClass="com.ecc.emp.dbmodel.service

33、.TableModelDAO4Oracle"><EncryptService id="encryptService" implClass="com.ecc.emp.dbmodel.service.EncryptService"/></TableModelDAO>Ø 在系统初始化的时候,加载该服务Ø 在TableModel的配置文件中,设置isEncrypted="true"如:<Field id="username" isEncrypted=&quo

34、t;true" columnName="username" cnname="员工姓名" length="45" JDBCType="VARCHAR" canBeNull="false"/>Ø 调用TableModelDao在insert和update的时候,会对设置过isEncrypted="true"的字段调用encryptService 的encrypt方法加密在查询的时候,会调用encryptService 的decrypt方法解密2.5.5

35、配置文件说明Ø Action所有的Action配置文件,存放于/WEB-INF/mvcs/项目名/actions目录下文件的格式如下:<?xml version="1.0" encoding="GB18030"?><actionDefines>说明:类映射,id ,实现类<classMap><map id="action" class="com.yucheng.cmis.ad.mvc.ADRequestController"/><map id=&quo

36、t;flowInvoker" class="com.yucheng.cmis.ad.mvc.ADFlowInvoker"/><map id="outputViews" class="java.util.HashMap"/><map id="output" class="com.ecc.emp.data.KeyedCollection"/><map id="kColl" class="com.ecc.emp.data.Ke

37、yedCollection"/><map id="iColl" class="com.ecc.emp.data.IndexedCollection"/><map id="field" class="com.ecc.emp.data.DataField"/></classMap><!- 获取操作主页面 -><action id="queryUserList" type="normal" checkSessio

38、n="true" ><flowInvoker><operation class="com.yucheng.srs.ops.user.QueryUserListOp"/><transition dest="retPage"/></flowInvoker><outputViews><jspView id="retPage" url="User/queryUserList.jsp" /></outputViews>

39、;</action>。<actionDefines>Ø Table模型定义文件TableModel名称.xml文件,存放于/WEB-INF/tables目录下格式如下:< TableModel名称.xml><TableModel id=" TableModel名称"cnname="描述" dbTableName="模型对应的表名"><Field id="属性域id"isPK="true/false,是否主键" columnName=

40、"列名" cnname="描述" length="列长度" JDBCType="列类型" canBeNull="是否可空 "/>关联引用定义,设置在主表模型文件中一对一<One2OneRef toField="关联表关联属性域id " refModelId="关联表model id" fromField="主表关联属性域id "/>一对多<One2MultiRef toField="关联表关联属性域id " refModelId="关联表model id" fromField="主表关联属性域id "/></TableModel>TableModel文件不允许用户直接修改,只能通过IDE的界面来配置3 结束打开action目录下的Test.xml文件.如需访问列表页面,则需在资源权限里配置菜单,将queryTestList.do这个action配置进去.:北京宇信易诚科技有限公司 第 30 页 2012-6-4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1