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)

四丶注解

//表示并不与数据库联系 通常指接收前端字段单独进行处理
@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-07

2、从结果集中取得时间部分

  resultSet.getTime()    --22:08:09

3、从结果集中同时得到日期和时间

  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));
    }

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

你可能感兴趣的:(微服务)