Python 官方文档:入门教程 => 点击学习
目录数据库表结构设计AbumTip类根据外键abum_id在数据库中查询的结果Controller查到的结果chrome浏览器preview结果解决的方法方法一方法二方法三最近在项目
最近在项目开发中,使用Spring Boot+mybatis的架构,数据库设计主键id时定义为bigint类型,使用mybatis的自动生成代码后没注意,主键在pojo里的类型为Long。查询时获取的对象列表取出的数值没有问题,但转为JSON传到前端后,id的数据始终不是数据库查出来的那个。
可以看到abumId(对应表abum_id)和tipId(对应表中tip_id)查询到的Long类型的数据都不对。
重新生成pojo对象,将所有数据库类型为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();
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为自定义转换器
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>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: java Long类型转为json后数据损失精度的处理方式
本文链接: https://www.lsjlt.com/news/162439.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0