一丶返回时间格式时差以及格式问题
//表示列名不为空
@Column(name = "start_date", nullable = true)
//返回前端的字段名称
@JsonProperty("StartDate")
//设置中国区时间格式年月日时分秒
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd'T'HH:mm:ss")
//@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
private Timestamp startDate;
二丶设置某个字段默认为某数据
@Column(nullable = false,name = "is_finish", columnDefinition = "varchar(1) default '0'")
三丶一对多,多对一配置
//一对多关系
//CascadeType.REMOVE 级联删除
//CascadeType.MERGE 级联更新合并
//CascadeType.DETACH 级联托管游离操作
//CascadeType.REFRESH 级联刷新
//orphanRemoval这个字段本身并没有生效,它表示级联对象之间的关系,要不要都无所谓
//fetch 表示懒加载提高效率
//mappedBy 表示对应的子表外键字段的实体名称
@OneToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH,CascadeType.REMOVE}, orphanRemoval = true, fetch = FetchType.LAZY,mappedBy="taskTwo")//多对一关系
//targetEntity 制定关联的(实体)对象
@ManyToOne(cascade={CascadeType.MERGE,CascadeType.REFRESH}, optional = true, targetEntity = TaskTwo.class)
【SpringBoot实体配置详解】四丶注解
//表示并不与数据库联系 通常指接收前端字段单独进行处理
@Transient
//表示返回前端是一个时间戳
//TIMESTAMP //DATE则是一个年月日时间段
@Temporal(TemporalType.TIMESTAMP)
五丶事务
异常结构图:
文章图片
可查的异常(checked exceptions):Exception下除了RuntimeException外的异常
不可查的异常(unchecked exceptions):RuntimeException及其子类和错误(Error)
如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。
如果不想终止,则必须捕获所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。
非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类。如IOException、SQLException等以及用户自定义的Exception异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch并处理,否则程序就不能编译通过。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。
@Transactional(rollbackFor=Exception.class)
事务只对public方法有效,私有的方法无效。
Spring框架的事务基础架构代码将默认地 只 在抛出运行时和unchecked exceptions时才标识事务回滚。 也就是说,当抛出个RuntimeException 或其子类例的实例时。(Errors 也一样 - 默认地 - 标识事务回滚。)从事务方法中抛出的Checked exceptions将 不 被标识进行事务回滚。
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)
注意: 如果异常被try{}catch{}了,事务就不回滚了,如果想让事务回滚必须再往外抛try{}catch{throw Exception}。
六丶jdbctemplate在执行sql时获得时间问题
1、从结果集中取得日期部分resultSet.getDate();
--2013-01-072、从结果集中取得时间部分resultSet.getTime()--22:08:093、从结果集中同时得到日期和时间resultSet.getTimestamp();
--2013-01-07 23:08:09
七丶时间格式全局转换
//统一转换日期格式
@InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
先总结这么多有时间了再来添上其他的
推荐阅读
- 微服务|微服务系列:服务发现与注册-----Eureka(面试突击!你想了解的Eureka都在这里.持续更新中......)
- 每日一书|每日一书丨学习微服务最好的方式(阅读《微服务架构设计模式》)
- 架构设计|使用Axon Framework探索CQRS架构系列(一)(命令, 命令总线 和 命令处理组件)
- #|Spring Cloud 常用组件
- java|熔断的意义
- java|Spring Boot配置文件放在jar外部
- Spring|spring-cloud开发微服务笔记(二)(高可用Eureka注册中心的搭建与RestTemplate和Fengin客户端调用微服务示例)
- 为什么要使用微服务
- 微服务|Eureka的高可用以及服务提供者、服务消费者集群之间的调用方式