解决mybatis查询日期时间数据得到long类型数据的问题

转载出处:https://blog.csdn.net/qq_29216083/article/details/77678981

使用mybatis查询数据时,如果数据库存储的是timestamp、datetime、date、time等时间类型,而Java bean也使用的是date类型,mybatis会自动将date类型转换为unix long时间eg:1503912320000,而不是时间格式。 
解决方式有两种: 
1.将Java bean 中的类型改为String类型。 
2.在java bean 中date类型的get方法上加上注解@JsonFormat 
jackson中有一个@JsonFormat注解,将它配置到Date类型的get方法上后,jackson就会按照配置的格式转换日期类型

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    public Date getEnddate() {
        return enddate;
    }

这样获取到的值就是正常的日期格式了

注意:

1、在实际项目中,从数据库拿出来的数据封装到*VO对象中,*VO对象如果没有什么特殊情况基本的属性都是String类型。

2、与数据库对应的实体中时间类型在Date与LocalDate之间选择的话,选择Localdate。

在Spring Boot项目中集成MyBatis并实现数据生成时间,通常需要以下几个步骤: 1. **引入依赖**:首先,在项目的pom.xml文件中添加mybatis-spring-boot-starter和mybatis-plus的依赖,如果使用的是mybatis-plus,因为它内置了时间字段的自动填充功能。 ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency> ``` 2. **配置自动填充策略**:如果你使用的是mybatis-plus,那么可以在application.yml或application.properties文件中设置全局的数据库字段填充规则,例如设置`自動填充时间戳`: ```yaml mybatis-plus: global-config: db-config: id-type: ID_WORKER logic-delete-value: -1 table-prefix: "tb_" field-fill: INSERT_TIME=SYSDATE(), UPDATE_TIME=NOW() ``` 这里`INSERT_TIME=SYSDATE()` 和 `UPDATE_TIME=NOW()` 分别指定了新插入记录的当前系统日期时间作为默认值。 3. **实体类注解**:在实体类(Pojo)上添加@Table注解,并指定是否使用mybatis-plus的@TableId注解来标识主键,以及是否自动填充时间字段: ```java import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @TableName("your_table_name") public class YourEntity { @TableId(value = "id", type = IdType.AUTO) private Long id; @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime createdAt; // 或者 LocalDateTime、Date等时间类型 ...其他字段... } ``` `@TableField(fill = FieldFill.INSERT_UPDATE)` 表示在创建和更新时自动填充该字段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值