关于Mysql的Date和java后端(SSM)的交互

问题前言

数据库字段存放的是Date类型,如果Java实体类也使用Date类型,不管是java.sql.Date还是java.util.Date,这样用Mybatis查询就会自动转换成unix long型时间戳

如2022-09-20会转为166xxxxxxx的long类型数据

在前后端可能发生的格式变换:

1.数据库date——mybatis查询的结果

        Date——long

2.mybatis——mvc封装到实体类,如

 public List<Inv> findInv() {
		List<Inv> list=invservice.findAllInv();
		System.out.println(list);
		return list;
    }

        pojo类的date会变成英文格式,如 Date=Sat May 28 00:00:00 CST 2022,

另,通过@JsonFormat(pattern="yyyy-MM-dd")可格式化pojo的时间

3.mvc方法return到前端(如layui),现实的和pojo格式一样(@JsonFormat注解后会显示如2022-01-01)

4.前端通过json传到后端,正常情况下mvc会正确接收json

但是注意,此时可能因为字段大写问题(导入jackson包的情况下)导致实际上json每个字段变成两个字段,一个大写一个小写,如

data": [
        {
            "Date": "2022-05-27",
            "date": 1653667200000,
            "category": "光纤",
            "remark": "",
            "specification": "CK-10",
            "orders": 10,
            "balance": 157,
            "id": 1,
            "Category": "光纤",
            "Specification": "CK-10",
            "Orders": 10,
            "Balance": 157,
            "Remark": ""
        },

此时如果自定义了Dateconvert,其只会转换小写的字段(大写的是本该消失的,因为@JsonProperty注解才得以存在,而小写的是long的形式,所以无法转换)

解决方法看关于用jackson的@JsonProperty注解属性名,会多出一个字段的问题_茉莉清香压九秋的博客-CSDN博客

最后最简单的方法,将Java实体类中的Date类型属性改为String类型就会自动转换为格式化好的字符串

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值