数据库中存日期使用datetime与timestamp类型与Java相应收接类型的实验、使用LocalDateTime与Timestamp类测试

准备工作

前端使用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"的字符串

数据库中设计表:分别有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);
        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类型也均能从数据库中取出接收。


版权声明:本文为m0_62576090原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。