亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java?Long類型轉(zhuǎn)為json后數(shù)據(jù)損失精度的處理方式

 更新時間:2022年01月13日 16:45:51   作者:FinelyYang  
這篇文章主要介紹了java?Long類型轉(zhuǎn)為json后數(shù)據(jù)損失精度的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

最近在項目開發(fā)中,使用spring boot+mybatis的架構(gòu),數(shù)據(jù)庫設(shè)計主鍵id時定義為bigint類型,使用mybatis的自動生成代碼后沒注意,主鍵在pojo里的類型為Long。查詢時獲取的對象列表取出的數(shù)值沒有問題,但轉(zhuǎn)為json傳到前端后,id的數(shù)據(jù)始終不是數(shù)據(jù)庫查出來的那個。

數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計

AbumTip類

根據(jù)外鍵abum_id在數(shù)據(jù)庫中查詢的結(jié)果

Controller查到的結(jié)果

chrome瀏覽器preview結(jié)果

可以看到abumId(對應(yīng)表abum_id)和tipId(對應(yīng)表中tip_id)查詢到的Long類型的數(shù)據(jù)都不對。

解決的方法

方法一

重新生成pojo對象,將所有數(shù)據(jù)庫類型為bigint都映射成String類型。

方法二

對于使用springboot,則增加配置代碼:

package com.gj.app.config; 
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import java.util.List;
 
@EnableWebMvc
@Configuration
public class WebDataConvertConfig extends WebMvcConfigurerAdapter {
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
            ObjectMapper objectMapper = new ObjectMapper();
            /**
             * 序列換成json時,將所有的long變成string
             * 因為js中得數(shù)字類型不能包含所有的java long值
             */
            SimpleModule simpleModule = new SimpleModule();
            simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
            simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
            objectMapper.registerModule(simpleModule);
            jackson2HttpMessageConverter.setObjectMapper(objectMapper);
            converters.add(jackson2HttpMessageConverter);
        }
}

方法三

在spring MVC中

增加類:

其中LongToStringJsonConverter為自定義轉(zhuǎn)換器

public class LongToStringJsonConverter extends ObjectMapper {
    /**
     * 
     */
    private static final long serialVersionUID = 1683531771040674386L;
 
    @Override
    public ObjectMapper registerModule(Module module) {
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        return super.registerModule(simpleModule);
    }
}
  <mvc:annotation-driven  conversion-service="conversionService">
        <mvc:message-converters>  
           <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
               <property name="objectMapper">  
                    <!-- <bean class="com.fasterxml.jackson.databind.ObjectMapper">   -->
                    <bean class="mypackage.LongToStringAdapter">
                        <property name="dateFormat">  
                            <bean class="java.text.SimpleDateFormat">  
                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />  
                            </bean>  
                        </property>  
                    </bean>   
               </property>
           </bean>
        </mvc:message-converters>  
    </mvc:annotation-driven>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)基于Tcp的socket聊天程序

    java實現(xiàn)基于Tcp的socket聊天程序

    這篇文章主要為大家詳細介紹了java實現(xiàn)基于Tcp的socket聊天程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Spring?Boot項目傳參校驗的最佳實踐指南

    Spring?Boot項目傳參校驗的最佳實踐指南

    有參數(shù)傳遞的地方都少不了參數(shù)校驗,在web開發(fā)中前端的參數(shù)校驗是為了用戶體驗,后端的參數(shù)校驗是為了安全,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項目傳參校驗的最佳實踐,需要的朋友可以參考下
    2022-04-04
  • springBoot項目配置文件加載優(yōu)先級及同配置覆蓋問題詳解

    springBoot項目配置文件加載優(yōu)先級及同配置覆蓋問題詳解

    SpringBoot配置?件可以放置在多種路徑下,不同路徑下的配置優(yōu)先級有所不同,下面這篇文章主要給大家介紹了關(guān)于springBoot項目配置文件加載優(yōu)先級及同配置覆蓋問題的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Java鏈表超詳細講解(通俗易懂,含源碼)

    Java鏈表超詳細講解(通俗易懂,含源碼)

    鏈表是一種物理存儲結(jié)構(gòu)上非連續(xù)存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的引用鏈接次序?qū)崿F(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于Java鏈表超詳細講解的相關(guān)資料,本文講解的內(nèi)容通俗易懂,含源碼,需要的朋友可以參考下
    2022-09-09
  • Java 反射(Reflect)詳解

    Java 反射(Reflect)詳解

    這篇文章主要介紹了JAVA 反射機制的相關(guān)知識,文中講解的非常細致,代碼幫助大家更好的理解學習,感興趣的朋友可以了解下
    2021-09-09
  • java學生成績管理系統(tǒng)設(shè)計與實現(xiàn)

    java學生成績管理系統(tǒng)設(shè)計與實現(xiàn)

    這篇文章主要介紹了java學生成績管理系統(tǒng)設(shè)計與實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • SpringBoot如何整合redis實現(xiàn)過期key監(jiān)聽事件

    SpringBoot如何整合redis實現(xiàn)過期key監(jiān)聽事件

    這篇文章主要介紹了SpringBoot如何整合redis實現(xiàn)過期key監(jiān)聽事件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot框架集成token實現(xiàn)登錄校驗功能

    SpringBoot框架集成token實現(xiàn)登錄校驗功能

    這篇文章主要為大家詳細介紹了SpringBoot框架集成token實現(xiàn)登錄校驗功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 基于Java實現(xiàn)雙向鏈表

    基于Java實現(xiàn)雙向鏈表

    這篇文章主要為大家詳細介紹了基于Java實現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • springboot使用@KafkaListener監(jiān)聽多個kafka配置實現(xiàn)

    springboot使用@KafkaListener監(jiān)聽多個kafka配置實現(xiàn)

    當服務(wù)中需要監(jiān)聽多個kafka時,?需要配置多個kafka,本文主要介紹了springboot使用@KafkaListener監(jiān)聽多個kafka配置實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-04-04

最新評論