数据库中存日期使用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"的字符串(注意接收到的为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类型也均能从数据库中取出接收。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值