杰信商贸10day83-jk项目笔记_第1页
杰信商贸10day83-jk项目笔记_第2页
杰信商贸10day83-jk项目笔记_第3页
杰信商贸10day83-jk项目笔记_第4页
杰信商贸10day83-jk项目笔记_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、² 第一天 国际物流 杰信商贸 + 搭建环境1. 项目背景杰信项目物流行业的项目,信商贸是国际物流行业一家专门从事器皿贸易的公司。公司总部位于十一个朝代的帝王之,业务遍及欧美。随着公司不断发展壮大,旧的信息系统已公司的快速发展需求,妨碍公司成长,在此背景下,公司台。决定研发杰信商贸综合管理平杰信商贸综合管理平台分三期完成。一期完成仓储管理(包括:采购单、仓库、货物、条形码、入库、出库、退货、盘点、库存、库存上限、统计)和展会管理(包括:展会管理、出单管理),形数字化管理。二期完成货运全流程管理,包括购销合同、出货表统计、出口报运单、HOME 装箱单、装箱单、委托书、财务统计等。三期完

2、成决策分析(包括:成本分析图、销售情况统计、重点客户、经营情况同期比对统计、工作绩效),为公司经营决策提供数据支持。2. 【面试】拿到新框架,如何下手当到一家新的软件公司,公司给你一个新框架,让你完成一个简单模块的 CRUD 操作,你怎样完成?步骤:1) 大概浏览一下说明的文档,了解软件解决什么问题,解决用户的什么需求2) 找 jar,浏览它的作用即可)框架,技术 freemake(看到不了解的,了解它的3) 画图,画系统架构的草图4) 系统都是分层体系,后往前画。看数据库配置文件,了解系统所连接的数据库,账号, 持久层Dao 数据库层Service 业务层a)b)c)d)e)f)层Contr

3、oller/actionJsp 视图层找权限管理部门表,一般都是一个的 CRUD 操作。找到模板,仿造模板,根据草图一步一步实现遇到新的不了解的技术,应该怎么处理?,了解其作用即可。然后仿写。了解业务,UML 用例图业界画用例图 Rational rose UML 非常强大的工具(大公司)用例图、类图、序列图、状态图(复杂状态流转画)用 PowerDesigner 画数据库建模PD,ROSE 都可以生产伪代码,但在实际业务中无人问津。3. 用例图1):代表系统中的一类用户2) 用例:代表业务功能3) 连线关系:哪个操作哪些用例画图的目的:为了开发解。了解整个系统的概貌,当画很多细节时,就会干扰

4、我们对图的了生产厂家货物管理员购销合同附件购销合同销售出口报运单出口报运单HOME装箱单船运HOME装箱单装箱单财务委托书装箱单财务统计委托书财务统计4. 系统功能结构图1) 功能点(分层,主次)演化成主菜单,左侧菜单,功能点2) 了解系统的所有功能3) 按功能点分配工作4) 用户报价的依据(按模块报价)功能模块图基础信息统计报表系统管理个人工作台系货运管理统使用反馈用户设定角色管理部门管理用户管理基础代码系统代码产品信息模板配置厂家信息留言板H O M E装箱合同管理报运管理装箱管理委托管理发票管理财务管理出货表5.系统的架构6.数据库异构数据库技术:当前的系统直接支持主流的数据库,需要少量

5、的编码OracleXEUniv 简版 (推荐)11g 正式版安装包,2 个文件,3G之前的 10g 的简版,不能创建一个本地服务,没有导入数据命令和导出数据令。sqlPlus 它可以直接用账号,可以。(权限大)PL/SQL oracle 客户端工具不能直接oracle。必须创建通道(本地服务)一般安装完 oracle 数据库,默认服务都是自动启动;日常不用时,可以停掉服务,启动,不占内存。系统安装 ORACLE 创建 SID,创建数据库(账号),默认 system/sys 系统账号。一定要记住。a)创建一个账号b)c) 使用创建的账号登陆d) 选择 MyObjects 只看到的内容7. 业务需

6、求:a) 需求说明书1) 描述业务功能生产厂家模块功能:为在购销合同模块中的货物信息和附件信息它们都有所属的生产厂家。b) 概要设计1) 细化描述业务功能2) 以表格形式数据库表(表+字段+描述)c) 生产厂家信息维护基础表 FACTORY_C功能:为在购销合同模块中的货物信息和附件信息它们都有所属的生产厂家。序号中文名称英文名称类型(长度)备注1.编号FACTORY_IDVARCHAR2(40)UUID2.全称FULL_NAMEVARCHAR2(200)根据客户所说的最大长度,比较模糊的长度,在他的基础上,翻 2 到 4 倍d) 主键策略1) 自增类型 INT/LONG 速度快2) UUID

7、 字符串 速度慢 (推荐使用 UUID)3.简称FACTORY_NAMEVARCHAR2(50)4.人CONTACTSVARCHAR2(30)20/305.PHONEVARCHAR2(20)6.MOBILEVARCHAR2(20)7.传真FAXVARCHAR2(20)8.备注CNOTEVARCHAR2(2000)当感觉它可能和关键字相时,就加一个 C 前缀9.验货员INSPECTORVARCHAR2(30)10.排序号ORDER_NOINT11.创建人CREATE_BYVARCHAR2(40)当前登录人的 ID12.创建部门CREATE_DEPTVARCHAR2(40)当前登录人所在部门13.

8、创建时间CREATE_TIMETIMESTAMP8.开发步骤a)PD 数据库建模,执行建表 SQL 语句b)创建 PO 对象生产厂家编号 VARCHAR2(40) <pk>全称 VARCHAR2(200)简称 VARCHAR2(50) VARCHAR2(30) VARCHAR2(20) VARCHAR2(20)传真VARCHAR2(20)备注VARCHAR2(2000)验货员VARCHAR2(30)排序号INT创建人VARCHAR2(40)创建部门 VARCHAR2(40)创建时间 TIMESTAMP9. 创建 MAVEN 工程a) Myeclipse1010.71) 测试类,无法

9、运试类2) Maven 构建环境仓库3) Maven 命令实际是通过 jar 中的类执行的4) maven 不同的 myeclipse 插件有 BUG当本地利用现有 MYECLIPSE 创建不了 maven 工程解决办法1) 升级 myeclipse 2013/20142) 使用 web 工程,拷贝 libs 放到 web 工程中b) Maven 工程如何增加依赖,依赖原则:1) 主要2) 数据库3) 第框架 springmvc、spring、mybatis c3p0、 oracle/mysql 驱动jar4) 日常其他 jar log4j、junit、poi5) 排除的 jar servle

10、t.jar TOMCAT 实现,c) 坐标怎么来?1) 搜索坐标2) myeclipse maven 插件,增加依赖,必须构建索引10. PD 基础配置1) 改直角线为直线再设置,保存修改的样式2) 取消 name 和 code 的联动3) 直接显示备注字段² 第二天 基础信息生产厂家1. 重点知识回顾Maven1) 覆盖仓库文件,实际企业开发,公司会架一个测试服务器,在测试服务器中架。我们开发的程序,都连接。当本地没有项目中要使用的 jar,Myeclipse maven 插件会自动到去找 jar,如果没找到仓远库 maven 寻找,找到后。act

11、iviti-engine-5.13.jar.lastUpdated 当程仓库时,由于网络不稳定,有可能中断。当程序再次连接,它会自动修正。Pom 文件报错,jar 错误,去仓库目录找 jar,jar 存在,点击 jar 开是否能打开。Jar 如果打不开,代表 jar时损坏,maven自动修正。人工删除,让他自动重新。无论是仓库,还是本地仓库只要有了jar,myeclipse maven 插件就会自动把它加载过来。2) Maven jar 分两类;一类是 maven 自身插件的 jar。另一类程序调用 jar。第一类,它跟 myeclipse maven 插件的版本紧密相关。关联在 maven

12、插件的小版本号。3):maven 骨架找不到,专门配置一个骨架Oracle实际企业中,在测试服务器上,安装 oracle 服务端。先安装操作系统,安装完操作系统,其他什么软件都不要安装,就安装 oracle。Oracle 很容易跟其它的程序发生只提示服务或者侦听起不来。,它后,就卸载,oracle 先进行程序卸载,然后打开表,搜索含有 ora 开头的所有内容,都删除。(下,oracle 卸载的文章,它比较具体告诉你要删除哪些。)重新安装。在我们本地的上,安装 oracle 客户端。创建本地服务。安装的客户端,在它的菜单中有一个应用程序。叫做“安装助手”。配置本地服务即可。1) 安装 xe 简版

13、,它自动作为服务端。因为是在本机安装,它自动创建一个XE 的本地服务,我们可以直接使用,而无需安装客户端。2) 虚拟机中安装,必须在本地安装一个 oracle 客户端,然后配置本地服务,这个 IP地址就是虚拟机中的地址。它连接时,可以用默认 oracle 服务端创建的服务名称 SIDPowerDesigner 15.1 它主要用来数据库建模,它本身创建 UML 所有的图。用例图:了解整个系统的功能,以及谁使用这些功能,了解整个系统的概貌。过程。系统功能结构图:给用户看,同时它是算合同费用时,可以按模块报价。开发可以按期分配工作任务。过程系统架构图:当开发。拿到一个新架构,有很多新的技术,画这个

14、架构图,让开发了解的架构。当我们开发时,按图的顺序的实现。2. 数据库建模表都是从需求中来,业务:在合同下的货物填写时,它是有一个生产厂家的;在货物下的附件填写时,有一个生产厂家。资深设计根据经验,它们有公用性,提出来作为基本信息模板,在货物和附件中就可以公用这些信息。3. 业务的字段内容怎么来?跟客户交流,客户会跟我们说,他都需要什么信息,这些信息搜集整理形成字段。4. 开发规范:a)数据库设计的规范lllll数据库表和字段都大写表都要加业务后缀,例如_C 客户表 _B 基础表 _P 权限表必须有主键,主键是表名去掉业务后缀,加_ID,大多表的主键使用 UUID字段多个单词写,用下划线隔开类

15、型 INT/LONG/DOUBLE/TIMESTAMP/CHAR/VARCHAR2 尽量化在这几个类型中,这样数据库设计相当简单排序号定死名称 ORDER_NOlll权限两个字段 CREATE_BY 创建人,CREATE_DEPT 创建部门创建时间 CREATE_TIMEb)代码的开发规范l将静态全)之间放在webapps 下;将动态需要验证权限放在WEB-INF/page(s 安l类文件放在 src/main/java 下; src/main/webapp 下文件 src/main/resources ; web 文件放在llcn.itcast.jk.domain 存放所有实体文件 POcn

16、.itcast.jk.dao 存放所有 dao 的接口和实现类,业务接口必须继承 BaseDao 接口, 业务的实现类必须继承 BaseDaoImpl 实现类。cn.itcast.jk.dao 存放所有的 service 接口和实现类,无需继承。cn.itcast.jk.controller 存放所有springmvc 的controller,它不必须继承BaseController;它创建两层目录结构,一层是大模块名称,第二层是小模块名称,业务内容都放在下面。jsp,它放在 WEB-INF/pages 目录下,也创建两级目录,第一层就是大模块名称,第二层是小模块名称。llllllponent

17、s 它第组件的目录,例如 jQuerymon.js 它是整个项目公用的 js webapp/mak/xlsprint excel 报表的模板文件5.主页设计时企业开发中常见的两种设计方式a) 帧框架 frameset table(业务系统)Framseset 帧集合,不能连接具体的页面Frame 帧,可以连接一个 jsp/actionb) Div+css+iframe (大型门户)6. 相对路径页面中直接写 title.action前面的路径是浏览器给的。规范。7. 业务:启用、停用设置一个标志位:对合同的生产厂家状态为启用,对不在合作的生产厂家状态为停用。8. 分析:设置一个标志位 stat

18、e,1:启用 0:停用9. 货运管理a) 业务:购销合同杰信和生产厂家签订的合同叫做购销合同。购销合同包括合同主信息,多个货物信息,多个附件信息。(整个购销合同是体现客户的订单,具体货物由哪个生产厂家制作,把整个购销合同分拆,分成每一个厂家一份)。一个购销合同包括多个货物信息,一个货物信息包括多个附件信息。两层一对多。在购销合同打印时,默认一个页面只能放两款货物,货物必须是同一个生产厂家的货物,如果不是一个厂家的,另起一页。b) 分析设计:1) 表名词:合同表、货物表、附件表2) 每个表的每个字段客户会给我们提供原始的表格,有的还有数据静态内容不在数据中出现。一定不能拿客户所说的唯一性的内容作

19、为关键字,以 UUID 或者自增作为主键, 主键。3) 表之间的关系合同和货物一对多,货物和附件一对多4) 业务逻辑购销合同总金额=所有货物的数量*货物的单价的总和和+ 所有附件的数量*附件的单价的总10. 【面试】在 oracle 中 NUMBER(5,2)整数 2 位,小数 2 位。11. 数据库设计基础原则:三范式1) 表必须有主键2) 字段内容不能是其他的字段3) 行数据不能相同而成12. 现今业界主流数据库设计原则:反三范式1) 表不是必须有主键2) 字段存一些后的中间的结果,冗余设计3)冗余三范式追求的目标空间尽量小;反三范式追求的目标是速度。创建数据库设计时首先按三范式设计,然后

20、局部优化。13. 货物和生产厂家什么关系?1) 多对一(对)2) 多对多(错)PD 获取指定表的创建相关的 SQL在实际工作中,如何从 PD 中挑选执行 SQL 建表1) 不创建外键什么时候需要外键什么时候不需要外键?2) 不创建备注信息保护软件Oracle 数据库备份和恢复1) 备份 pl/sql需求调研设计开发测试试运行正式上线运行维护否否否否否是是2) 恢复SQL 形式备份,备份不能含有大字段在导入时,不直接用工具,直接拷贝 sql 语句,进行执行² 第三天 货运管理业务购销合同1. 回顾重点知识a) Oracle 安装在本机安装 oracle 客户端,创建一个本地服务,程序或

21、者库。台(PL/SQL)就可以数据PL/SQL 绿色版,第一次运行它自动扫描本机安装的 oracle,tnsnames.ora,同时下配置信息。如果把绿色版换个路径,就无法连接数据库。(TNS 侦听无法连接)绿色版只能在放回原来第一次的路径。就可以。Oracle 相当的脆弱。蓝屏,导入异常电脑自动重启,台式机突然断电。都会导致 oracle你再次连接时,直接报错。一般只要重启服务即可。手动重新启动一般可以修复。Oracle 崩溃。b) 拿到别人的项目,不要导入,新建项目拷贝相关文件在 myeclipse 中新建一个项目。新建一个 maven 项目,然后把相关文件按其目录要求拷贝过来。新建项目时

22、不要用默认自带的 jdk,jdkjar 不全,一定要换成我们安装的完整版本。将相关文件到对应目录下即可。c) 如果直接导入项目,常见的错误。1) lib 丢失2) 配置文件丢失因为每个工程都有相关的配置文件,而这些配置文件一般无需人工修改。d) 完成生产厂家 CRUD了解现有架构下的一些开发结构,对应文件放在哪个目录,日常文件命名规则,目录命名规则,jsp 命名规则。了解各层的特点。e) 启用、停用业务功能状态流转的一个基础。f)需求分析1) 从需求文字中挑名词,进行建表2) 从需求文字中挑描述两个名词之间的关系,作为表关系3) 从需求文字中条件名词相关的动词,作为业务逻辑4) 挖掘需求中名词

23、形成的表的所有字段总结:设计过程就是将用户的语言转换为开发的语言。g) 面试讲项目要做到三点:1) 将项目时,先要表述业务,项目背景,2) 讲业务3) 想面试官所想要的poi 等,技术亮点,深度的业务,CXFWebService 服务、Maven、工作流、2. 在页面操作设计原则对业务不能让用户操作太方便,业务误操作后责任相当大。一定让用户多层操作,让其反复确认。避免客户来推卸责任。3. 路径绝对路径$ctx/cargo/contract/list.action (推荐方式)当项目发布在 ROOT 下可以使用,不推荐/cargo/contract/list.action相对路径cargo/co

24、ntract/list.action4. 细粒度的权限a)日常权限框架:基于权限,用户、权限(URL、主菜单、左侧菜单、按钮)-b)数据权限:纵向的数据权限过滤:对数据进行过滤1) 本人(专责):登录后只能看到的信息Where 条件 create_by = #当前登录者 id2) 部门(公司):登录后登录人是经理级别A. 只能看本部门Where 条件 create_dept=#当前登录者所在的部门B. 只能看到本部门和直属下属的数据总经务部-社保组Where 条件create_dept=#当前登录者所在的部门And create_dept like #当前登录者所在部门?C. 看到所有下属的数

25、据财务副总-财务部-社保组Where 条件 create_dept like #当前登录者所在部门 id%c) 部门表的编码有业务规则001 总部001004 财务部001005 软件部001004001 社保组001004002 工资组001005001 杰信组编码 3 位为一层d) 跨部门跨权限(特殊的情况,大型企业)举例:副总(分管),分管业务交叉单独加表实现Where 条件 create_dept in (当前登录者配置的管理的部门集合) OrCreate_by in (当前登录者配置的管理的集合)5. 业务:购销合同的上报取消流程上报:当销售录入合同后,确认无误后,点击“提交”;提交

26、之前的信息都为草稿,草稿状态一个流程的人看不到这个,当提交后,状态改为 1,这一个流程的报运就可以看到,操作报运的信息。取消:当提交后,发现信息少了,回退,点击“取消”。如果报运没有操作,可以回退;当报运已经开始操作并有了,这时不能回退,走“补录”流程。业务:箱数不能直接装在集装箱中,先装到一个纸盒子中。一个纸盒子能装多少个个就称为装率。杯。多个少客户订300 个杯,装到一个盒子能容纳 3 个杯,需要 100 个箱子。箱数=数量除以装率的分母 300/3=100,装率是 1/3² 第四天 SQL 的力量1. 重点知识回顾a) 主从结构:1)它和主表在 mapper 有什么不同按对象来

27、(hibernate)按普通字段来(mybatis)b) 前台页面的结构货物的外键:合同,通过 get 的方式在 url 后面加参数(主从)货物的外键:生产厂家,通过下拉列表的方式(只需要一个 id 时) 对象方式获得外键:一般是需要多个字段c) 权限管理:细粒度的权限日常权限系统:、用户、权限,它实现主菜单、左侧菜单、URL、按钮细粒度权限系统:包含上面的所有内容,还要包括数据权限(对数据进行过滤,按人,按部门),分管-跨部门,跨权限。(单独创建一个维护表)任务:2. 数据字典它是一个通用结构,跟业务无关;数据字典表是用户可以动态扩充内容。它的分类用户不能改。分类是系统上线时,开发进行初始化

28、。(分类是在代码中写死的,分类下的内容,用户可以动态扩充)a) 一般它由编号+名称。lll:0101 男,0102 女包装:0201 PCS,0202 SETS区县:02901 西安市 02902 宝鸡市通用的数据字典,它可以存放多个分类,结构必须是 ID+NAME TYPE+ID+NAMEb) 数据字典都在哪里使用?单选的组合;下拉框3. 表的业务后缀_c业务表 customer_b基础表 base_p权限表 privilege在两层一对多结构中子表数据不设置外键关联时,就称为僵尸数据。4. 级联删除Hibernate多层关联最简单;配置关联关系时,只关系上线级对象。多层关联关系时,级联删除

29、必须一级一级的删除。多级时要专门写 mapper 方Mybatis法。1) 在 mybatis 在 service,删除货物时,先调用附件的 service 删除方法2) 通过 sql,高速删除(批量删除)每层都要实现一个删除业务:要求直接显示合同下的货物数和附件数select count(*) from contract_product_cwhere contract_id='928eb2ae-23ba-46e0-9ad0-054354f66af8'select count(*) from ext_cproduct_cwhere contract_product_id in

30、(select contract_product_id from contract_product_c where contract_id='928eb2ae-23ba-46e0-9ad0-054354f66af8')5. 获取货物数和附件数select(select count(*) from contract_product_cwhere contract_id=c.contract_id)as cpnum, (select count(*) from ext_cproduct_cwhere contract_product_id in (select contract_p

31、roduct_id from contract_product_c where contract_id=c.contract_id) as extnum,c.*from contract_c c6. 【面试】PO、VO、BO 有什么区别?PO 持久化对象,一般就直接对象数据库表VO 视图对象,一般对应页面 jsp BO 业务对象,一般对应复杂业务7. 合同总金额:1) 可以通过货物的新增时,同步计算货物的总金额和和合同的总金额;在附件新增时,同步计算附件的总金额和合同的总金额;(完成)(修改、删除时重新计算)2) SQL实现货物的总金额select cnumber*price as cptot

32、al from contract_product_cwhere contract_id ='471e562b-bfa5-4ba7-a2b5-17e9b0d40179'附件的总金额select sum(cnumber*price) as exttotal from ext_cproduct_cwhere contract_product_id in (select contract_product_id from contract_product_cwhere contract_id=c.contract_id)最终select(select count(*) from cont

33、ract_product_cwhere contract_id=c.contract_id)as cpnum, (select count(*) from ext_cproduct_cwhere contract_product_id in (select contract_product_id from contract_product_c where contract_id=c.contract_id) as extnum,(nvl(select sum(cnumber*price) as cptotal from contract_product_c where contract_id

34、=c.contract_id),0)+nvl(select sum(cnumber*price) as exttotal from ext_cproduct_cwhere contract_product_id in (select contract_product_id from contract_product_c where contract_id=c.contract_id),0) as total_amount,c.CONTRACT_ID,c.OFFEROR,c.CONTRACT_NO,c.SIGNING_DATE,c.INPUT_BY,c.CHECK_BY,c.INSPECTOR,

35、c.IMPORT_NUM,c.CREQ.CUSTOM_NAME,c.DELIVERY_PERIOD,c.SHIP_TIME,c.TRADE_TERMS,c.REMARK,c.PRINT_STYLE,c.OLD_STATE,c.STATE,c.OUT_STATEfrom contract_c c8. 业务:购销合同查看查看合同的主信息,查看合同下的货物信息,还要查看附件信息,货物和附件的信息要显示出它们的关联关系。利用面对对象的关联关系来实现上面的需求非常简单。9. 合同、货物、附件、生产厂家构建复杂多级关联的 SQL 时原则1) 挑选最小的结果集2) 滚雪球(左连接),逐步往上加内容3) 重复

36、字段,需要起别名(mybatis)在实际业务中几乎没有内连接的情况,直接就用左连接即可。货物和生产厂家selectcp.CONTRACT_PRODUCT_ID,cp.PRODUCT_NO,cp.PRODUCT_IMAGE,cp.PUMBER,cp.OUT_NUMBER,cp.LOADING_RATE,cp.BOX_NUM,cp.PACKING_UNIT,cp.PRICE,cp.AMOUNT,cp.FINISHED,cp.EXTS,cp.ORDER_NO,f.factory_id,f.full_name,f.factory_name,f.contacts,f.phone from(selectC

37、ONTRACT_PRODUCT_ID,FACTORY_ID,PRODUCT_NO,PRODUCT_IMAGUMBER,OUT_NUMBER,LOADING_RATE,BOX_NUM,PACKING_UNIT,PRICE,AMOUNT,FINISHED,EXTS,ORDER_NOfrom contract_product_c) cp left join(select factory_id,full_name,factory_name,contacts,phone from factory_c) fon cp.factory_id=f.factory_id附件和生产厂家selectext.EXT_

38、CPRODUCT_ID,ext.CTYPE,ext.PRODUCT_NO,ext.PRODUCT_IMAGE,ext.PRODUCT_DESC,eUMBER,ext.PACKING_UNIT,ext.PRICE,ext.AMOUNT,ext.PRODUCT_REQUEST,ext.ORDER_NO,f.factory_id,f.full_name,f.factory_name,f.contacts,f.phone from(selectEXT_CPRODUCT_ID,FACTORY_ID,CTYPE,PRODUCT_NO,PRODUCT_IMAGNT,PRODUCT_REQUEST,ORDER

39、_NOfrom ext_cproduct_c) extleft joinUMBER,PACKING_UNIT,PRICE,AMOU(select factory_id,full_name,factory_name,contacts,phone from factory_c) fon ext.factory_id=f.factory_id代表结果集中有重复字段selectc.contract_id,c.offeror,c.contract_no,c.signing_date,c.input_b y,c.check_by,c.inspector,c.total_amount,c.import_nu

40、m,c.creques t,c.custom_name,c.delivery_period,c.ship_time,c.trade_terms,c. remark,c.print_style,c.old_state,c.state,c.out_state,c.create_by,c.create_dept,c.create_time,t.contract_product_id,duct_no,duct_image,t.umber,t.out_number,t.loading_rate,t.box_num,t.packing_unit,t.price,t.amount,t.f

41、inished,t.exts,t.order_no,t.factory_id,t.full_name,t.factory_name,t.contacts,t.phone,t.ext_cproduct_id,t.ctype,t.ext_product_no,t.ext_product_image,t.ext_product_des umber,t.ext_packing_unit,t.ext_price,t.ext_amount,duct_request,t.ext_order_no,t.ext_factory_id,t.ext_full_name,t.ext_factory_name

42、,t.ext_contacts,t.ext_phonefrom(selectcontract_id,offeror,contract_no,signing_date,input_by,check_by,inspector,total_amount,import_num,crequstom_name,delivery_period,ship_time,trade_terms,remark,print_style,old_state,state,out_state,create_by,create_dept,create_timefrom contract_c) cleft join (selec

43、tcp.contract_product_id,cp.contract_id,duct_no,duct_image,cp.pumber,cp.out_number,cp.loading_rate,cp.box_num,cp.packing_unit,cp.price,cp.amount,cp.finished,cp.exts,cp.order_no,cp.factory_id,cp.full_name,cp.factory_name,cp.contacts,cp.phone,ext.ext_cproduct_id, ext.ctype,duct_no as

44、ext_product_no,duct_image asext_product_image,duct_desc as ext_product_desc,umber asumber,ext.packing_unit asext_packing_unit,ext.price as ext_price,ext.amount as ext_amount, duct_request,ext.order_no as ext_order_no, ext.factory_id as ext_factory_id,ext.full_name asext_full_nam

45、e,ext.factory_name as ext_factory_name,ext.contactsas ext_contacts,ext.phone as ext_phonefrom (selectcp.contract_product_id,cp.contract_id,duct_no,duct_image,cp.pumber,cp.out_number,cp.loading_rate,cp.box_num,cp.packing_unit,cp.price,cp.amount,cp.finished,cp.exts,cp.order_no,f.factory_id

46、,f.full_name,f.factory_name,f.contacts,f.phone from(selectcontract_product_id,contract_id,factory_id,product_no,product_imag umber,out_number,loading_rate,box_num,packing_unit,price,amount,finished,exts,order_ nofrom contract_product_c) cpleft join(select factory_id,full_name,factory_name,contacts,p

47、hone from factory_c) fon cp.factory_id=f.factory_id) cpleft join (selectext.ext_cproduct_id,ext.contract_product_id,ext.ctype,duct_no,duct_image,duct_desc,ex umber,ext.packing_unit,ext.price,ext.amount,duct_request,ext.order_no,f.factory_id,f.full_name,f.factory_name,f.co

48、ntacts,f.phone from(selectext_cproduct_id,contract_product_id,factory_id,ctype,product_no,product_imag it,price,amount,product_request,order_nofrom ext_cproduct_c) ext left join (select umber,packing_unfactory_id,full_name,factory_name,contacts,phone from factory_c) fon ext.factory_id=f.factory_id)

49、exton cp.contract_product_id=ext.contract_product_id) ton c.contract_id=t.contract_idwhere c.contract_id=#contractId² 第五天 神奇的 POI1. 重点知识回顾完成购销合同整个模块,1) 面向对象对象关联方式,mybatis mapper 将resultMap 都配置为对象关联,mybatis 提供两种关联方式,collection ofType 多/association 一 javaType。注意,结果集字段不能有重复的。关联关联如果很多,只能层层嵌套。嵌套越多效率

50、越低。2) SQL货物数、附件数A.llB.lSQL 支持可以将一个的结果(只有一个值)作为一个字段SQL 支持子中可以使用现有结果集中的字段。动态利用 SQL 计算总金额SQL 的常规运算,先查额的 SUM(数量*单价)+附件的 SUM(数量*单价)=合同的总金llNULL 无法累计,在 oracleSQL 语句中 NVL(COL,0)购销合同查看,它包括合同信息、货物信息、货物的厂家信息、附件信息、附件的厂家信息;微软 COM+(dll)B/S2. SQL 优化Select * from t1 leftjoin t2 leftjoin t3最大的优化,就是缩小每个中间的结果集在开发中 SQ

51、L 比较复杂,用一个视图替代。(大型项目不建议)3. POI,解决什么问题?JXL,POI 都是操作 excelExcel 一些企业小的应用都直接用 excel 来实现,例如:工资报表, 作为数据的备份和恢复(导入、导出),进销存Jxl 它只能操作 excel 2003 版本,它导入导出数据量小时性能很高POI 它可以操作 office 系列软件 word、excel、ppt、visio(画网络布局、家装),在早期版本中它在导出海量数据时,容易了这个问题。在新版本中它解决了这个海量数据了优化,解决4. POI 初体验,8 个步骤就实现需求:Testpublic void testHSSF_ba

52、se() throws IOException/* 开发步骤:* 1、创建一个工作簿* 2、创建一个工作表* 3、创建一个行对象* 4、创建一个单元格对象,指定它的列* 5、给单元格设置内容* 6、样式进行修饰(跳过)* 7、保存,写文件* 8、关闭对象*/Workbook wb = new HSSFWorkbook();Sheet sheet = wb.createSheet();Row nRow = sheet.createRow(7); Cell nCell = nRow.createCell(4);/第八行/第五列nCell.setCellValue("传智播客万年长!&qu

53、ot;);OutputStream os = new FileOutputStream("c:testpoi.xls");wb.write(os);/excel 2003os.flush();os.close();5. POI 小结:Poi 本身操作极其简单,只要记住使用的 api 即可。但是它在处理单元格时1) 不能直接看中间结果,必须运行完才可以看到2) HSSF 构造的对象都在内存中,创建非常多的对象,当对象量越来越多时, 容易造成堆溢出。Excel 2003Excel 2007 以上版本6. 业务出货表功能:购销合同的月统计,按船期进行统计。杰信每月月底要出一张报表出货表,给领导看。信息来源:合同中,货物中船期条件:年月selectc.custom_name,c.contract_no,c.delivery_period,c.ship_time,c.trade_terms,duct_no,concat(fromumber,cp.packing_unit) as

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论