1、前台传String日期格式后台用date接收
前端的日期选择器,在传递时,一般是String类型,而后端用类对象去接收,通常需要的Date类型,这样就会报错
为了解决这个问题,后端可以在接收实体的这个字段上添加注解:@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date firstCooperationDate;
这样就可以正常接收了
另外 @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
是后台date传到前台展示时可以帮你转成String
2、query和vo层
Vo层:VO表现对象
用于前端界面展示,ViewObject表现层对象;主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值;对于Android而言即是activity或view中的数据元素。
用于表示一个与前端进行交互的java 对象。这里的 VO 只包含前端需要展示的数据即可,对于前端不需要的数据,比如数据创建和修改的时间等字段,出于减少传输数据量大小和保护数据库结构不外泄的目的,不应该在 VO 中体现出来。通常遵守 Java Bean 的规范,拥有 getter/setter 方法。
Query层:
QUERY 的概念使得 Domain Bean 的代码更加干净。定义了一个抽象类 Query,该类包含了一些比较通用的查询属性,如是否分页、当前页页码、每页记录数、开始时间、结束时间以及查询目标类的 Class 等。
用于接收前端传入的java对象,用来接收一些查询信息,在项目中我们通常涉及到多表的联查,页面上很多查询信息,可能不会在同一个实体类中存在,所以我们可以定义一个query类,用来接收前端的查询信息
一般使用就是使用query类去查数据库,查出来的对象用Vo去映射
3、时间,当前日期+date天
/**
* 当前日期+day天
* @param date
* @param day
* @return
*/
public static Date getDay(Date date,Integer day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, +day);//+day 今天的时间加day天
date = calendar.getTime();
return date;
}
时间比较,判断借阅时间是否超过7天:
//拿到借阅开始的时间+7天
Date startTime = getDay(u.getCheckDate(),7);
//当前时间
Date time=new Date();
//把借阅申请时间和当前时间做比较>7
//当前时间-借阅开始的时间+7天
Long day = time.getTime()-startTime.getTime();
//再判断day,day>=0 则超过7天,否则不超过
判断是否大于20天:
Date time = new Date();
//获取当前时间和合同签订时间的时间差
Long now = time.getTime() - start.getTime();
//转换为天数
int day = (int) (now / 24 / 3600000);
// 判断是否大于20天
if (day >= 20) {
}
4、使用CollectionUtils工具类判断List
CollectionUtils.isNotEmpty() 包含null,size=0等多种情况
而== null 只能用来判断是否为null
注:list.isEmply()与CollectionUtils.isEmpty(list)的区别
如果list为null时,使用list.isEmply就会报NullPointerException(空指针异常),为什么呢?因为使用list.isEmply的前提是保证list不为空。一个对象,如果值为null那么调用它内部的方法时一定会报空指针异常。所以使用list.isEmpyt()方法之前要先对list对象是否为null进行判断