项目的经验小总结一下

212 阅读2分钟

1. mp的乐观锁

避免丢失更新的问题。

注意点

  1. mp乐观锁可查看官网的使用情况,不支持string类型,可以是数字,也可以是date
  2. 使用乐观锁时,要先查出数据,然后再去更新,这样version才会+1。这个有点坑,mp不能在更新的用sql带一下version+1吗,一定要查询出来才可以。
  3. mp默认主键id自增是19位String类型。
  4. 使用的时候,要加配置,不然会报绑定异常。

使用

  1. 数据库表添加字段version(int),方便后面+1。String类型怎么+1呢,对吧。
  2. 实体类 添加注解@version
  3. 添加配置,不添加的话会报绑定异常。
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
       MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
       interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
       return interceptor;
    }

2. json返回时间格式的配置

注意点

  1. 这边只是针对时间的返回值做修改。所以字段一定是date类型的!!

使用

在application.yml中添加以下配置,会默认对所有返回的时间修改

spring:
 jackson:
   date-format: yyyy-MM-dd HH:mm
   time-zone: GMT+8

如果个别的时间格式要定制,那么就在对应的属性上添加原来的@JsonFormat,这个优先级比配置文件中的高。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;

3. 这个不算总结,留点小坑。模块依赖的问题

既然模块之间可以依靠< dependency ></ dependency>进行依赖,并在启动类上面添加好扫描包 @SpringBootApplication(scanBasePackages = {"com.example"}),那么还需要feign吗。 还是说dependency增加了模块之间的耦合性,不推荐这么操作呢。

4. 接口中定义常量

看到项目中在接口中定义常量,那么思考为什么不是在类上定义呢。扩展性? 暂时想到一个,接口中成员变量默认就是public string final,方便。另一方面,以后谁要继承,也好操作。