SpringBoot实体配置详解

一丶返回时间格式时差以及格式问题

//表示列名不为空 @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)

五丶事务
异常结构图:
SpringBoot实体配置详解
文章图片


可查的异常(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)); }

先总结这么多有时间了再来添上其他的

    推荐阅读