Rpc接口
request
- 实现Serializable接口,实例化数据
- 继承BaseAmsRequest类,封装操作人
- 参数要带上@ApiModelProperty,说明参数的含义
对于Long、Integer等类型的参数,使用@NotNull限制非空,使用@Min和@Max限制最小值和最大值
对于String类型的参数,使用@NotBlank限制非空
对于List类型的数据,使用@Size(max =500, min =1)限制列表元素的个数
response
- 参数要带上@ApiModelProperty,说明参数的含义
- 使用模板类BaseResponse,封装一些信息,如是否成功,错误号和错误信息
mybatis生成模板
- columnOverride
将数据库中表的字段映射到对应的java类型。Boolean类型的值在数据库用tinyint存储;对于String类型的数据,短的话可以用varchar存储,长的话可以用text
<columnOverride column="is_deleted" javaType="Boolean"/>
- ignoreColumn:
忽略数据库表中的某些字段
<ignoreColumn column="created_at"/>
建表sql语句
- 主键
一定要有主键id,并且设置自增长
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id'
- 创建和更新时间:
一定要有创建时间和更新时间
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
- 是否删除字段
一切数据都是软删除,在查询时加限定条件查询
`is_delete` tinyint(3) NOT NULL DEFAULT '0' COMMENT '删除标志',
索引
- 设置主键索引
PRIMARY KEY (`id`) USING BTREE,
- 设置联合索引
UNIQUE KEY `uk_mkt_nid_lid` (`mkt_nid`,`lid`),
- 设置key索引
KEY `idx_created_at` (`created_at`),KEY `idx_updated_at` (`updated_at`),
- 在写查询sql语句时,先写加入索引的字段
编程习惯
判断非空
- 在写接口时,参数要进行非空判定
- 对于Integer、Long、Class等类型的数据,使用Objects.nonNull判断是否为空
- 对于String类型的数据,使用StringUtils.isNotBlank判定非空
- 对于List类型的数据,使用CollectionUtils.isNotEmpty判定非空后,再进行遍历
设置默认值
- 对于sortType等形式的字段,设置默认值,前端不一定传入
- 在写rpc接口时,首先给response中的各个字段值赋默认初始值,再编写业务逻辑
分页逻辑
request
- pageNum:第几页
- pageSize:页的大小
- sortType:排序类型,1-升序,2-降序,可以设置默认值
- sortField:排序字段,对哪个字段进行排序,可以设置默认值
response
- List<>:查询列表
- totalNum:总的数量
- hasMore:是否还有下一页
repository
example.setOrderByClause("created_at " + sortType + " limit " + offset + "," + length);
操作记录流水
- 记录操作人、操作类型、操作描述和操作信息
- 编写enum类,加入@Getter和@AllArgsConstructor注解,设置操作类型opType和操作记录opDesc
- 写一个私有方法addOpLog,在需要加入操作记录时,直接调用
消息队列
优势:异步、限流、多线程并发消费
标签:非空,类型,设置,实习,操作,默认值,主键,经验总结 From: https://www.cnblogs.com/yanchaoyi/p/16801240.html