SpringBoot系列---【id類型為Long,前端接收到的數據和后端返回數據不一致的問題,導致修改和刪除失效】


1.問題:

前端發現,修改和刪除的時候,修改了,刪除了之后,結果查看詳情和列表的時候,數據仍然還是以前的數據。

2.分析

查看接口文檔調用接口,發現返回的id和數據庫的id一致,通過前端ajax調用,用F12的network查看的響應結果,發現id和數據庫的id不一樣,最后幾位變成了0。

這就是典型的Long類型精度丟失的問題。

3.解決方案

方法一:全局解決方案,統一給前端返回字符串

import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.math.BigInteger;

@Configuration
public class JacksonConfig {
    /**
     * Jackson全局轉化long類型為String,解決jackson序列化時傳入前端Long類型缺失精度問題
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return jacksonObjectMapperBuilder -> {
            jacksonObjectMapperBuilder.serializerByType(BigInteger.class, ToStringSerializer.instance);
            jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);
        };
    }
}

方法二:字段上加注解

@JsonSerialize(using = ToStringSerializer.class)
private Long id;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM