搭建新项目注意事项

作为项目负责人,一开始要做很多事情,总会忽略很多比较关键的地方。以下是关于之前项目的一些总结,以后再遇到新项目时,一定要先仔细阅读此总结再开始新项目的搭建。

一、数据库相关

1.设计数据库时尽量确认好每个字段的长度、类型
在类型方面,特别需要注意的是:数字类型要明确是否有小数,时间的存储类型确认 好是string、datetime还是date。

2.保证数据库字段名字符合实际指代的意思和规范

3.主键不要直接定义成【id】,而要加上前缀,定义成【表名id】或者【表名_id】

4.每张表一定要有creator、create_time,modifier、modify_time、del_flag,时间类型为datetime,创建人和修改人的ID类型为long或int,删除标记类型可以为tinyInt

5.相关业务的数据库表的表名可以使用统一前缀,如o_order、o_mail

6.如果项目中会有很多关联查询,为了减少关联查询,那么表中外键所在表的相关外键也可以作为此表的一个字段。例如,商品表中有卖家ID(seller_id),卖家表中有所在企业ID(enterprise_id),如果我们想查询一个企业有哪些商品,为了避免关联查询,我们就可以将enterprise_id也可存在商品表中。
这样做可能会带来数据冗余的问题,这就需要在查询效率和冗余问题之间进行权衡了。一般像外键造成的冗余是被允许的。

7.数据库最选要写设计文档规范
所有数据库设计要写成文档,文档以模块化形式表达.大致格式如下:
‘——————————————-
’ 表 名: web_user
’ 作 者: Peter
’ 日 期: 2017-10-10
’ 版 本: 1.0
’ 描 述: 保存用户资料
‘——————————————-
’ 字段名 类型 长度 备注
’ userID int, 10 主键
’ userName vachar 10 用户名
’ ……
‘——————————————–

8.保证开发、测试、正式数据库结构同步
每次对测试数据库的更改,如修改字段的名字、长度,类型等等时,我们应当使用sql语句,如ALTER TABLE person ADD COLUMN birthday; ,然后将该sql语句备份在项目中。经过漫长的测试后,在正式环境需要发一版时,我们只需要将该sql在正式数据库中执行一次即可,执行完后对备份的sql进行标记说明已经在正式环境中执行。
为了以防万一,我们还需要用mysqlDiff工具将两个库的数据表结构进行比较。
9.设计数据库字段时,如果该字段有唯一性要求,则必须对该字段设置唯一索引(unique)

二、代码相关

  1. 组织项目的分层结构。个人偏向于同一业务相关的vo、po、controller、service、dao、xml等这些包都放在同一功能包目录下。

  2. 异常处理公共类,主要是指Controller层的,这可以避免每个接口方法都要写try catch

  3. 定义好异常返回规则并实现,需将规则告知前端开发人员。

  4. 针对不同模块或大的业务功能,编写不同的常量类。可以避魔法值。

  5. 定义分页相关字段的公共类,在接口中要接收分页查询的参数时,可通过继承或实现分页公共类的对象接收。

  6. Controller层只能是对参数校验和写不重复的简单逻辑,主要业务逻辑必须写在service层

  7. 如果用的框架不是特别好,可以对简单的增删改查自定义一个service层的公共接口和一个dao层的公共接口。MybatisPlus就不需要自定义。

  8. 接口规范最好遵循restful,即资源状态改变。如user/{id}/addition【接口中不能有动词】

  9. VO对象最好继承PO对象,这样可以少写很多字段
    项目的多数情况都是一个数据库表里存了另外一个表的主键,而在前端展示的时候却需要另外一个表里的另一个字段,例如,购买的商品表里会存用户的ID,而前端需要展示用户的姓名,此时就需要创建一个商品VO,里面添加一个“用户名”字段。

  10. 如果是mybatis,建议用generate自动生成部分代码。
  11. 项目一定要事先考虑清楚权限日志的实现方式

猜你喜欢

转载自blog.csdn.net/zcl_love_wx/article/details/78461374