准备工作
前端使用element-ui的组件、后端自己写接收类、
@PostMapping("/savetime")
public void saveTime(@RequestBody MyTimeDto myTimeDto){
String strTime = myTimeDto.getMt();
System.out.println(strTime);
//2022-12-04T03:30:57.000Z
}
最终后端接收到类似这样"2022-12-04T03:30:57.000Z"的字符串(注意接收到的为UTC时间)
数据库中设计表:分别有timestamp类型和datetime类型
测试接收时间并保存至数据库
编写mapper: SaveTime添加功能
@Mapper
public interface SaveTime {
@Insert("insert into mtable values (null,#{timestamp},#{localDateTime})")
void saveTi(Timestamp timestamp,LocalDateTime localDateTime);
}
看下controller层
@Autowired
SaveTime saveTime;
@PostMapping("/savetime")
public void saveTime(@RequestBody MyTimeDto myTimeDto){
//接收前端的数据
String strTime = myTimeDto.getMt();
System.out.println(strTime);
//制造LocalDateTime和Timestamp类对象
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
LocalDateTime localDateTime = LocalDateTime.parse(strTime, dateTimeFormatter);
// LocalDateTime localDateTime1 = localDateTime.plusHours(8);修正时间
Timestamp timestamp = Timestamp.valueOf(localDateTime);
//保存到数据库、看是否成功
saveTime.saveTi(timestamp,localDateTime);
}
看到保存成功、
此时数据库中timestamp类型对应java中Timestamp、
数据库中datetime类型对应java中LocalDateTime。
那么反过来呢?下面实验一下
看到依旧成功新增
测试取出时间
编写mapper: SaveTime添加功能
@Select("select * from mtable where id = #{id}")
MyTime selectByID(int id);
接收实体类MyTime:均采用LocalDateTime类型
public class MyTime {
private String id;
private LocalDateTime timestamp;
private LocalDateTime localDateTime;
//get、set、toString方法省略
}
编写测试类
@Autowired
private SaveTime saveTime;
@Test
void myTest(){
MyTime myTime = saveTime.selectByID(1);
System.out.println(myTime);
//MyTime{id='1', timestamp=2022-12-03T15:54:35, localDateTime=2022-12-03T15:54:35}
}
再将实体类MyTime:均采用Timestamp类型也均能从数据库中取出接收。