Loading

实习经验总结

Rpc接口

request

  1. 实现Serializable接口,实例化数据
  2. 继承BaseAmsRequest类,封装操作人
  3. 参数要带上@ApiModelProperty,说明参数的含义
    对于Long、Integer等类型的参数,使用@NotNull限制非空,使用@Min和@Max限制最小值和最大值
    对于String类型的参数,使用@NotBlank限制非空
    对于List类型的数据,使用@Size(max =500, min =1)限制列表元素的个数

response

  1. 参数要带上@ApiModelProperty,说明参数的含义
  2. 使用模板类BaseResponse,封装一些信息,如是否成功,错误号和错误信息

mybatis生成模板

  1. columnOverride
    将数据库中表的字段映射到对应的java类型。Boolean类型的值在数据库用tinyint存储;对于String类型的数据,短的话可以用varchar存储,长的话可以用text
<columnOverride column="is_deleted" javaType="Boolean"/> 
  1. ignoreColumn:
    忽略数据库表中的某些字段
<ignoreColumn column="created_at"/>

建表sql语句

  1. 主键
    一定要有主键id,并且设置自增长
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id'
  1. 创建和更新时间:
    一定要有创建时间和更新时间
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', 
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  1. 是否删除字段
    一切数据都是软删除,在查询时加限定条件查询
`is_delete` tinyint(3) NOT NULL DEFAULT '0' COMMENT '删除标志',

索引

  1. 设置主键索引
PRIMARY KEY (`id`) USING BTREE,
  1. 设置联合索引
UNIQUE KEY `uk_mkt_nid_lid` (`mkt_nid`,`lid`),
  1. 设置key索引
KEY `idx_created_at` (`created_at`),KEY `idx_updated_at` (`updated_at`),
  1. 在写查询sql语句时,先写加入索引的字段

编程习惯

判断非空

  1. 在写接口时,参数要进行非空判定
  2. 对于Integer、Long、Class等类型的数据,使用Objects.nonNull判断是否为空
  3. 对于String类型的数据,使用StringUtils.isNotBlank判定非空
  4. 对于List类型的数据,使用CollectionUtils.isNotEmpty判定非空后,再进行遍历

设置默认值

  1. 对于sortType等形式的字段,设置默认值,前端不一定传入
  2. 在写rpc接口时,首先给response中的各个字段值赋默认初始值,再编写业务逻辑

分页逻辑

request

  1. pageNum:第几页
  2. pageSize:页的大小
  3. sortType:排序类型,1-升序,2-降序,可以设置默认值
  4. sortField:排序字段,对哪个字段进行排序,可以设置默认值

response

  1. List<>:查询列表
  2. totalNum:总的数量
  3. hasMore:是否还有下一页

repository

example.setOrderByClause("created_at " + sortType + " limit " + offset + "," + length);

操作记录流水

  1. 记录操作人、操作类型、操作描述和操作信息
  2. 编写enum类,加入@Getter和@AllArgsConstructor注解,设置操作类型opType和操作记录opDesc
  3. 写一个私有方法addOpLog,在需要加入操作记录时,直接调用

消息队列

优势:异步、限流、多线程并发消费

posted @ 2022-10-18 00:51  天使的羽翼  阅读(22)  评论(0编辑  收藏  举报