【MybatisPlus】对数据库中datetime类型字段的处理(获取与格式处理)

        数据库中Datetime类型字段可以对应Java实体类中的Date数据类型或LocalDateTime数据类型。但这两种数据类型直接却有着很大的区别,被用在不同的应用场景中。(一般推荐使用LocalDateTime,有更多的灵活性和功能)

private Date createTime;
private Date updateTime;
// 或者
private LocalDateTime createTime;
private LocalDateTime updateTime;

一、Data数据类型与LocalDateTime数据类型的区别

        Date数据类型属于java.util包,是Java的一个日期和时间类,它代表特定时刻的时间戳,存储的是自1970年1月1日以来的毫秒数,但不包含时区信息,对时区不敏感。且Date数据类型是可变的,可以通过setTime(long time)来设置时间戳。

        LocalDateTime数据类型属于java.time包,是Java 8引入的新日期和时间API的一部分,它代表了一个日期和时间,但没有时区信息,若要处理时区信息可以使用ZonedDateTime类。而LocalDateTime数据类型不可变,一旦创建LocalDateTime对象,它的值将不会改变。若想要修改值,只能创建一个新的LocalDateTime对象。

        LocalDateTime的基本使用可以看下面这篇文章:

【Java LocalDateTime】LocalDateTime获取时间信息、格式化、转换为数字时间戳icon-default.png?t=N7T8https://blog.csdn.net/zxy2361380031/article/details/134344872

二、对时间类型数据输出信息的格式化

 这里需要引入jackson依赖来format时间的数据类型:

<!-- jackson -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.3</version>
</dependency>

         方法一:  (全局配置)

        在springBoot的配置文件中添加以下代码可以实现全局配置:

# application.properties的配置如下:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss # 时间格式
spring.jackson.time-zone=GMT+8                 # 时区
# application.yaml的配置如下:

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss # 时间格式
    time-zone: GMT+8                 # 时区

        方法二:  (对字段分别设置)

        通过对字段添加@JsonFormat注解来设置该字段的时间格式,比较繁琐,但更加灵活。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private LocalDateTime startTime;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private LocalDateTime endTime;

三、格式

yyyy
MM
dd
HH
mm
ss

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatisPlus ,读取数据库 datetime 类型字段可以使用 Java 的 Date 类型来接收。在 SQL 语句,可以使用 MyBatis 提供的 `#{}` 占位符来接收参数。在配置 SQL 语句的结果类型时,可以使用 MyBatis 提供的 `resultType` 属性或者 `resultMap` 属性进行配置。具体可以在 XML 文件配置如下: 使用 `resultType` 属性配置结果类型: ```xml <select id="getUserByCreateTime" resultType="com.example.entity.User"> SELECT * FROM user WHERE create_time >= #{startTime,jdbcType=TIMESTAMP} AND create_time <= #{endTime,jdbcType=TIMESTAMP} </select> ``` 其,`resultType` 属性指定了结果类型为 `com.example.entity.User`,该实体类应该定义一个 `java.util.Date` 类型字段来接收数据库datetime 类型字段。 使用 `resultMap` 属性配置结果类型: ```xml <select id="getUserByCreateTime" resultMap="resultMap"> SELECT * FROM user WHERE create_time >= #{startTime,jdbcType=TIMESTAMP} AND create_time <= #{endTime,jdbcType=TIMESTAMP} </select> <resultMap id="resultMap" type="com.example.entity.User"> <result column="create_time" property="createTime" jdbcType="TIMESTAMP" javaType="java.util.Date"/> </resultMap> ``` 其,`resultMap` 属性指定了结果类型为 `resultMap`,该 resultMap 配置了 `create_time` 字段映射到实体类的 `createTime` 字段类型为 `java.util.Date`。在对应的实体类,该字段也应该使用 `java.util.Date` 类型来定义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

狐笙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值