6-3 编码前的设计工作
前面的第5章节对WEB项目整个开发步骤及内容已经做了介绍,这节内容是对开发步骤的一个细化,虽然是一个模块的开发,但麻雀虽小、五脏俱全,大家可以“窥一斑而知全豹”。
本节内容包括5个部分:WEB项目前后端开发步骤、数据库表设计、页面原型设计、功能梳理、接口梳理。
1、WEB项目前后端开发步骤
2、数据库表设计
客户资源表company
编号 名 称 字段名 类 型(长度) 说 明
- UUID uuid char(32) 主键
- 公司名称 comname varchar(60) 名称唯一
- 公司地址 comaddress varchar(120)
- 公司网址 comurl varchar(30)
- 公司座机 comtelephone varchar(30)
- 公司成立日期 establishdate char(7) 格式:2015.07
- 员工人数 employeenumber int
- 总产值 totaloutput float(20,4) 单位:万元,表示整数部分最长为16位,小数部分为4位
- 公司简介 comdesc text
- 营运状态 comstatus char(4) 正常运营/已经注销/正在注销
- 联系人姓名 contactname varchar(20)
- 联系人手机号 contactmobile char(11) 名称唯一
- 联系人邮箱 contactemail varchar(30) 名称唯一
3、页面原型设计
基于Axure RP进行快速原型设计,如下
4、功能梳理
1)客户分页列表展示
2)添加客户
3)查看客户详情
4)编辑客户信息
5)删除客户
6)复杂查询
5、接口梳理(可以简称为方法梳理)
接口管理方式有多种,在线管理的也挺多(如阿里巴巴的RAP2,功能相当强大,另外DOClever也不错),这里简洁起见,采用最基本的方式来管理接口,下面的有的接口不是必然的,是为了演示相关的知识点而增加的。
接口最基本的元素
URL路径 方法名称 作用 传参 提交方式 返回值
- /company/save save(Company company) 保存公司信息 form表单 post 无
- /company/update update(Company company) 修改公司信息 form表单 post 无
- /company/findAll findAll() 查询全部数据(分页) 无 get/post List
- /company/findAllSimplePage findAllSimplePage(Map) 简单分页查询 Map封装的对象 post JSONObject对象
- /company/queryDynamic queryDynamic(Map) 复杂条件下的分页查询 Map封装的对象 post JSONObject对象
- /company/findByNativeSQL findByNativeSQL 演示执行原生SQL查询 公司名称 get List
- /company/updateByNativeSQL updateByNativeSQL 演示执行原生SQL更新 公司名称、地址 get 无
- /company/validateComname validateComname 公司名称唯一性验证 公司名称 post true:唯一,false:不唯一
- /company/validateEmail validateEmail 邮箱唯一性验证 邮箱 post true:唯一,false:不唯一
- /company/validateMobile validateMobile 手机号唯一性验证 手机号 post true:唯一,false:不唯一
11. 页面跳转接口,访问该接口后,重定向到Thymeleaf模板 12. /company/redirectListHtml redirectListHtml return “redirect:/listCompany.html”
(有的接口 是直接跳转到某个网页 这样的方法名称后面 一般都加一个HTML)
13. Restful设计风格的接口
14. 接口URL HTTP方法 接口说明
15. /company/company POST 保存公司信息
16. /company/company/{uuid} GET 查询公司列表
17. /company/company/{uuid} DELETE 删除公司
18. /company/company/{uuid} PUT 更新公司信息
说明:当hibernate的主键生成策略是uuid的时候,慎用saveOrUpdate,因为该方法只有ID为null才执行save,其他任何情况下执行update