1.时间相关
1.1:时间格式转换
Date date = new Date();
//获取当前时间
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将格式从时间戳改为常用显示格式
System.out.println(dateFormat.format(date));
#注意:千万要注意格式代码,不能写成 ‘YYYY-MM-dd’ 因为YYYY是基于周来计算年的,它指向当天所在周属于的年份,一周从周日开始算起,周六结束,只要本周跨年,那么这一周就算下一年的了。正确姿势是使用yyyy格式。
1.2:时间/json互转错误:
error示例:JSON parse error: Cannot deserialize value of type java.util.Date
在实体类的时间属性上添加下面的注解,格式化日期。
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
2:文件相关:
2.1:各文件操作工具类的拷贝相关方法速度对比:
链接:this is url
2.2 在文件内写入后一定要关闭输入流,否则文件会变成空
writer.write(str);
//如果不手动刷新缓存并且关闭流,很可能文件内容为空
writer.flush();
writer.close();
3:bigDecimal
3.1:bigDecimal长度太长,返回给前端,精度会丢失,即后几位都会变成0
解决办法:给前端返回字符串类型。
加注解: @JsonSerialize(using = ToStringSerializer.class)
//示例:
@JsonSerialize(using = ToStringSerializer.class)
private BigDecimal id;
3.2:使用 BigDecimal 表示和计算浮点数,必须使用字符串的构造方法来初始化 BigDecimal,否则数据会出错,正确示例:
System.out.println(new BigDecimal("0.2").add(new BigDecimal("0.1")));
System.out.println(new BigDecimal("2.0").subtract(new BigDecimal("0.4")));
System.out.println(new BigDecimal("4.22").multiply(new BigDecimal("300")));
System.out.println(new BigDecimal("222.2").divide(new BigDecimal("200")));
4.mybatis:
4.1.mybatis的update方法,当向某个字段塞入空值时,默认会不做操作(略过该字段),但业务逻辑上我们恰恰需要更新这个字段为空,这时就可以在对应字段的实体类里给该字段加个:
//让mybatisplus可更新值为空
@TableField(fill = FieldFill.INSERT_UPDATE)
5.feign相关
5.1:feign调用时@SpringQueryMap不解析父类参数的解决办法
添加feign配置类
@Configuration
public class FeignConfiguration {
@Bean
Logger.Level feignLoggerLevel() {
//这里记录所有,根据实际情况选择合适的日志level
return Logger.Level.FULL;
}
/**
* @Description 替换解析queryMap的类,实现父类中变量的映射
*/
@Bean
public Feign.Builder feignBuilder() {
return Feign.builder()
.queryMapEncoder(new BeanQueryMapEncoder())
.retryer(Retryer.NEVER_RETRY);
}
}
然后在FeignClient上去配置即可。
@FeignClient(value = "springcloudapi",configuration = FeignConfiguration.class)
public interface FeignVodService {
}