remark.md 2.8 KB

服务模块说明

服务说明

本服务模块的ORM升级为Mybatis-Plus,entity/mapper/service/impl/xml统一使用工具类(CodeGenerator)自动生成。 为保证代码的可扩展性,原则上在生成的类里,不添加自定义代码,防止数据库表更新重新生成造成类文件被覆盖。

数据库说明

每张表必须包含create_time、create_by、update_time、update_by字段,在添加和更新时,这几个字段会自动填充数值,无需人为处理。

  • create_time datetime DEFAULT NULL COMMENT '创建时间',
  • create_by bigint(20) DEFAULT NULL COMMENT '创建人',
  • update_time datetime DEFAULT NULL COMMENT '更新时间',
  • update_by bigint(20) DEFAULT NULL COMMENT '更新人'

表设计注意点:

  1. 业务表设计,存储引擎统一InnoDB、字符集统一:utf8mb4、核对:utf8mb4_general_ci。特殊情况可基于实际需求设定。
  2. 表的主键id,类型统一为bigint(20),需指定主键 和 非空,不可设置自增;代码生成时默认id使用Mybatis-Plus自带雪花算法生成19为数字;
  3. 状态字段(只存在两种状态),字段类型为tinyint(1),Mybatis将此类型会自动转换为Boolean性,0为false,非0为true。字段命名避免使用status等Mysql等关键词,可用state等。
  4. 类型字段(存在两种以上),字段类型为tinyint(3),此类型取值范围0~127。
  5. 逻辑删除字段,原则上每张表都应该存在此字段,实际以需要为准。字段命名:is_deleted, 字段类型:tinyint(1)。
  6. 表设计指定字段类型, 按需最小原则。
  7. 能用tinyint不用smallint,能用smallint不用int,能用int不用bigint。
  8. 针对字符型,若存储字段值为固定长度,则使用char并指定长度,如:sex、mobile等。
  9. 表设计字段类型长度,按需设置、最小原则。如:varchar型,原则上够用即可,考虑实际情况,可适当设置大一些,但长字符型或非特殊情况,避免超过255。
  10. 非特殊情况,避免使用text、mediumtext、mediumint、mediumblob、longtext、longblob。
  11. 存储长字符型数据尽量用varchar,长度最好控制在2000及以内。 注意:utf-8型varchar最大长度21845。
  12. 若业务需求必须使用text、mediumtext、mediumint、mediumblob、longtext、longblob等,列表数据查询不可查询该类型字段。

服务及数据库使用

  1. 最大可能使用Mybatis-Plus生成方法,尽力减少使用自定义方法和自定义Sql,保证服务高可维护性和效率。
  2. 对不频繁变动、需要关联的冷数据,可在自己设计表里添加冗余 或 服务缓存,减少关联Sql和跨服务频繁调用。
  3. 跨服务模块之间的数据库表,不允许使用关联Sql查询,可用服务RPC远程调用,在服务端进行数据封装和逻辑处理。