Mybatis查询的时间数据中包含T

本文介绍了在MyBatis中使用Map作为查询结果类型以提高灵活性,并解决了查询MySQL datetime类型数据时出现'T'字符的问题。通过LocalDateTime转换为时间戳的方法,实现了日期的正确格式化。
摘要由CSDN通过智能技术生成

小技巧:Mybatis当查询一个数据库时,需要返回许多数据,平时我们都是使用定义一个实体类,来进行数据的封装,而如今我们可以使用一个Map类型,来作为返回值,比如:resultType="java.util.LinkedHashMap"。最后使用List来对map集合进行接收。

<select id="selectByParams" parameterType="java.util.Map"  resultType="java.util.LinkedHashMap"> // 映射xml

// mybatis在运行时会将其转为map进行存放,映射层接口
public List<Map> selectByParams(@Param("pf_state") String pfState,
                               @Param("pf_operator_id") Long pfOperatorId);

最近我使用mybatis查询数据库中的时间时发现返回的数据中包含有T,如图:

而数据库中的数据却是这个样子的,如图: 

我经过不断的上网搜索,发现这个是因为,MyBatis会将MySQL中的datetime类型转化成Java中的LocalDateTime类型造成的,这个时候们就可以添加一个方法,用于进行时间转换。

    public Long toTimestamp(LocalDateTime localDateTime) {
        // 通过LocalDateTime.atZone方法,使用系统默认时区ZonId.systemDefault()获取Instant实例
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
        Instant instant = zonedDateTime.toInstant();
        // 获取时间戳
        long timeStamp = instant.toEpochMilli(); // 1669392000000

        // 如果想要进行日期格式化    2022-11-26 00:00
        String format = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(time); 

        return timeStamp;
    }

注意,这种转换出来的数据,是一个时间戳,具体来说返回来的数据就是1970年到现在查询的时间,距离的毫秒数。如果想要将其转换为年月日,这个时候调用SimpleDateFomat方法,进行日期格式化。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值