找回密码
 立即注册
查看: 17|回复: 1

springboot3操作时间显示问题2025-12-18T14:35:36

[复制链接]

106

主题

5

精华

110

金币

技术维护QQ:515138

积分
242
发表于 3 天前 | 显示全部楼层 |阅读模式
springboot3操作时间显示问题2025-12-18T14:35:36
1).  方式一
在属性上加上注解,对日期进行格式化
  1. package com.zidiu.entity;
  2. import com.fasterxml.jackson.annotation.JsonFormat;
  3. import lombok.AllArgsConstructor;
  4. import lombok.Builder;
  5. import lombok.Data;
  6. import lombok.NoArgsConstructor;
  7. import java.io.Serializable;
  8. import java.time.LocalDateTime;
  9. @Data
  10. @Builder
  11. @NoArgsConstructor
  12. @AllArgsConstructor
  13. public class Employee implements Serializable {
  14.     private static final long serialVersionUID = 1L;
  15.     private Long id;
  16.     private String username;
  17.     private String name;
  18.     private String password;
  19.     private String phone;
  20.     private String sex;
  21.     private String idNumber;
  22.     private Integer status;
  23.     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  24.     private LocalDateTime createTime;
  25.     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  26.     private LocalDateTime updateTime;
  27.     private Long createUser;
  28.     private Long updateUser;
  29. }
复制代码

2).  方式二(推荐 )
在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对日期类型进行格式处理

  1. /**
  2.      * 扩展Spring MVC框架的消息转化器
  3.      * @param converters
  4.      */
  5.     protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
  6.         log.info("扩展消息转换器...");
  7.         //创建一个消息转换器对象
  8.         MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
  9.         //需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据
  10.         converter.setObjectMapper(new JacksonObjectMapper());
  11.         //将自己的消息转化器加入容器中
  12.         converters.add(0,converter);
  13.     }
复制代码

1,添加依赖:
  1. <dependencies>
  2.         <dependency>
  3.             <groupId>org.springframework.boot</groupId>
  4.             <artifactId>spring-boot-starter-json</artifactId>
  5.         </dependency>
  6.     </dependencies>
复制代码
2,添加转换器对象
  1. package com.zidiu.json;
  2. import com.fasterxml.jackson.databind.DeserializationFeature;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.fasterxml.jackson.databind.module.SimpleModule;
  5. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
  6. import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
  7. import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
  8. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
  9. import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
  10. import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
  11. import java.time.LocalDate;
  12. import java.time.LocalDateTime;
  13. import java.time.LocalTime;
  14. import java.time.format.DateTimeFormatter;
  15. import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
  16. /**
  17. * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
  18. * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
  19. * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
  20. */
  21. public class JacksonObjectMapper extends ObjectMapper {
  22.     public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
  23.     //public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
  24.     public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm";
  25.     public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
  26.     public JacksonObjectMapper() {
  27.         super();
  28.         //收到未知属性时不报异常
  29.         this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
  30.         //反序列化时,属性不存在的兼容处理
  31.         this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
  32.         SimpleModule simpleModule = new SimpleModule()
  33.                 .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
  34.                 .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
  35.                 .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
  36.                 .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
  37.                 .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
  38.                 .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
  39.         //注册功能模块 例如,可以添加自定义序列化器和反序列化器
  40.         this.registerModule(simpleModule);
  41.     }
  42. }
复制代码
3,扩展Spring MVC框架的消息转化器配置
  1. package com.zidiu.config;
  2. import cn.hutool.core.util.RandomUtil;
  3. import com.zidiu.interceptor.JwtTokenInterceptor;
  4. import com.zidiu.json.JacksonObjectMapper;
  5. import io.swagger.v3.oas.models.OpenAPI;
  6. import io.swagger.v3.oas.models.info.Info;
  7. import io.swagger.v3.oas.models.info.License;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.context.annotation.Bean;
  12. import org.springframework.context.annotation.Configuration;
  13. import org.springframework.http.converter.HttpMessageConverter;
  14. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  15. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  16. import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
  17. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. /**
  22. * 配置类,注册web层相关组件
  23. */
  24. @Slf4j
  25. @Configuration
  26. public class WebMvcConfiguration extends WebMvcConfigurationSupport {
  27.     @Autowired
  28.     private JwtTokenInterceptor jwtTokenInterceptor;
  29.     /**
  30.      * 注册自定义拦截器
  31.      *
  32.      * @param registry
  33.      */
  34.     protected void addInterceptors(InterceptorRegistry registry) {
  35.         log.info("开始注册自定义拦截器...");
  36.         registry.addInterceptor(jwtTokenInterceptor)
  37.                 .addPathPatterns("/admin/**")
  38.                 .excludePathPatterns("/admin/employee/login");
  39.     }
  40.     /**
  41.      * 根据@Tag 上的排序,写入x-order
  42.      *
  43.      * @return the global open api customizer
  44.      */
  45.     @Bean
  46.     public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
  47.         return openApi -> {
  48.             if (openApi.getTags()!=null){
  49.                 openApi.getTags().forEach(tag -> {
  50.                     Map<String,Object> map=new HashMap<>();
  51.                     map.put("x-order", RandomUtil.randomInt(0,100));
  52.                     tag.setExtensions(map);
  53.                 });
  54.             }
  55.             if(openApi.getPaths()!=null){
  56.                 openApi.addExtension("x-test123","333");
  57.                 openApi.getPaths().addExtension("x-abb",RandomUtil.randomInt(1,100));
  58.             }
  59.         };
  60.     }
  61.     @Bean
  62.     public OpenAPI customOpenAPI() {
  63.         return new OpenAPI()
  64.                 .info(new Info()
  65.                         .title("金黑用户系统API")
  66.                         .version("1.0")
  67.                         .description( "Knife4j集成springdoc-openapi示例")
  68.                         .termsOfService("http://doc.xiaominfo.com")
  69.                         .license(new License().name("Apache 2.0")
  70.                                 .url("http://doc.xiaominfo.com")));
  71.     }
  72.     /**
  73.      * 扩展Spring MVC框架的消息转化器
  74.      * @param converters
  75.      */
  76.     protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
  77.         log.info("扩展消息转换器...");
  78.         //创建一个消息转换器对象
  79.         MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
  80.         //需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据
  81.         converter.setObjectMapper(new JacksonObjectMapper());
  82.         //将自己的消息转化器加入容器中
  83.         converters.addFirst(converter);
  84.     }
  85. }
复制代码
干货源代码下载:
jinhei-waimai.zip (272.7 KB, 下载次数: 0, 售价: 50 金币)

SpringBoot3+SSM的企业级Java项目实战之外卖小程序


上一篇:springboot3对象属性拷贝和MD5加密
下一篇:springboot3公共字段自动填充,创建时间、创建人、修改时间、修改人等
网站建设,公众号小程序开发,系统定制,软件App开发,技术维护【联系我们】手机/微信:17817817816 QQ:515138

106

主题

5

精华

110

金币

技术维护QQ:515138

积分
242
 楼主| 发表于 3 天前 | 显示全部楼层
  1. package com.zidiu.config;
  2. import cn.hutool.core.util.RandomUtil;
  3. import com.zidiu.interceptor.JwtTokenInterceptor;
  4. import com.zidiu.json.JacksonObjectMapper;
  5. import io.swagger.v3.oas.models.OpenAPI;
  6. import io.swagger.v3.oas.models.info.Info;
  7. import io.swagger.v3.oas.models.info.License;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springdoc.core.customizers.GlobalOpenApiCustomizer;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.context.annotation.Bean;
  12. import org.springframework.context.annotation.Configuration;
  13. import org.springframework.http.converter.HttpMessageConverter;
  14. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  15. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  16. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * 配置类,注册web层相关组件
  22. */
  23. @Slf4j
  24. @Configuration
  25. public class WebMvcConfiguration implements WebMvcConfigurer {
  26.     @Autowired
  27.     private JwtTokenInterceptor jwtTokenInterceptor;
  28.     /**
  29.      * 注册自定义拦截器
  30.      *
  31.      * @param registry
  32.      */
  33.     public void addInterceptors(InterceptorRegistry registry) {
  34.         log.info("开始注册自定义拦截器...");
  35.         registry.addInterceptor(jwtTokenInterceptor)
  36.                 .addPathPatterns("/admin/**")
  37.                 .excludePathPatterns("/admin/employee/login");
  38.     }
  39.     /**
  40.      * 根据@Tag 上的排序,写入x-order
  41.      *
  42.      * @return the global open api customizer
  43.      */
  44.     @Bean
  45.     public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
  46.         return openApi -> {
  47.             if (openApi.getTags()!=null){
  48.                 openApi.getTags().forEach(tag -> {
  49.                     Map<String,Object> map=new HashMap<>();
  50.                     map.put("x-order", RandomUtil.randomInt(0,100));
  51.                     tag.setExtensions(map);
  52.                 });
  53.             }
  54.             if(openApi.getPaths()!=null){
  55.                 openApi.addExtension("x-test123","333");
  56.                 openApi.getPaths().addExtension("x-abb",RandomUtil.randomInt(1,100));
  57.             }
  58.         };
  59.     }
  60.     @Bean
  61.     public OpenAPI customOpenAPI() {
  62.         return new OpenAPI()
  63.                 .info(new Info()
  64.                         .title("金黑用户系统API")
  65.                         .version("1.0")
  66.                         .description( "Knife4j集成springdoc-openapi示例")
  67.                         .termsOfService("http://doc.xiaominfo.com")
  68.                         .license(new License().name("Apache 2.0")
  69.                                 .url("http://doc.xiaominfo.com")));
  70.     }
  71.     /**
  72.      * 扩展Spring MVC框架的消息转化器
  73.      * @param converters
  74.      */
  75.     public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
  76.         log.info("扩展消息转换器...");
  77.         //创建一个消息转换器对象
  78.         MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
  79.         //需要为消息转换器设置一个对象转换器,对象转换器可以将Java对象序列化为json数据
  80.         converter.setObjectMapper(new JacksonObjectMapper());
  81.         //将自己的消息转化器加入容器中,converters.size()-1 解决添加顺序问题和Knife4j文档请求异常冲突问题
  82.         converters.add(converters.size()-1,converter);
  83.     }
  84. }
复制代码



网站建设,公众号小程序开发,系统定制,软件App开发,技术维护【联系我们】手机/微信:17817817816 QQ:515138

QQ|Archiver|自丢网 ( 粤ICP备2024252464号-1 )

GMT+8, 2025-12-21 16:49

专注于网站建设,公众号小程序制作,商城小程序,系统定制,软件App开发

【联系我们】手机/微信:17817817816 QQ:515138

快速回复 返回顶部 返回列表