mybatis返回日期变成时间戳问题

问题描述:

// 在Mapper.java中

import java.util.List;

import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {

IPage<Map> querylist(Page<Map> page,@Param("map") Map map);

}

上面的查询中使用了mybatis plus 的 Page 来实现分页,这样如果数据库字段类型是datetime的,返回给前端的数据中都变成了时间戳(如果不用Page来分页,而是通过传递pageNo,pageSize参数的形式,日期格式正常,感觉是Page捣的鬼...)

尝试过 JacksonConfig.java 中配置 Jackson2ObjectMapperBuilderCustomizer 、WebConfig.java中配置MappingJackson2HttpMessageConverter 都没有作用。

请问,怎么才能全局设置,让mybatis plus 不返回时间戳,而是返回 2022-05-01 08:09:10 这种格式呢?先谢谢了。


回答:

诶,返回的应该是IPage<User>吧:

IPage<User> querylist(Page<Map> page,@Param("map") Map map);

然后需要的话,你User里面那个日期也可以搞成字符串类型:

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")

private String createdTime;

希望能帮助到你。


回答:

可能 mybatis plus 返回的是 java.time.LocalDateTime,而

spring:

jackson:

time-zone: GMT+8

date-format: yyyy-MM-dd HH:mm:ss

这个配置项只作用于 java.util.Date,对 java.time.LocalDateTime 不生效

那么我建议删除这个配置项,然后添加下面的注解配置类
统一 DateLocalDateTimeLocalDateLocalTime 的格式

@Configuration

public class JacksonConfiguration {

private String dateFormat = "yyyy-MM-dd";

private String timeFormat = "HH:mm:ss";

@Bean

public Jackson2ObjectMapperBuilderCustomizer addDateTimeFormatter() {

return builder -> {

String dateTimeFormat = dateFormat + " " + timeFormat;

DateTimeFormatter dt = ofPattern(dateTimeFormat), d = ofPattern(dateFormat), t = ofPattern(timeFormat);

builder.simpleDateFormat(dateTimeFormat)

.deserializers(new LocalDateTimeDeserializer(dt), new LocalDateDeserializer(d), new LocalTimeDeserializer(t))

.serializers(new LocalDateTimeSerializer(dt), new LocalDateSerializer(d), new LocalTimeSerializer(t));

};

}

}


回答:

这个和数据关系大吗?之前用MySQL这个问题是时有时无,后来用PG是每次都是时间戳

以上是 mybatis返回日期变成时间戳问题 的全部内容, 来源链接: utcz.com/p/944549.html

回到顶部