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,在需要加入操作记录时,直接调用

消息队列

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

原文地址:http://www.cnblogs.com/yanchaoyi/p/16801240.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性