首页 > 编程语言 >mp雪花算法生成的id到前端丢失精度问题

mp雪花算法生成的id到前端丢失精度问题

时间:2023-04-01 09:02:25浏览次数:22  
标签:jackson FORMAT 算法 mp new import com id fasterxml

mp生成的id是Long型18位,但是js处理到16位就四舍五入了,解决办法就是在服务器转成字符串传给前端

 

 

WebMvcConfig 要继承 WebMvcConfigurationSupport,重写里面的
extendMessageConverters方法
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        //创建消息转换器对象,将对象转换成JSON数据
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        //设置对象转换器,底层使用jackson将java对象转为json
        messageConverter.setObjectMapper(new JacksonObjectMapper());
        //将上面的消息转换器对象追加到mvc框架的转换器集合中
        converters.add(0,messageConverter);//0是优先使用我们的转换器
    }

 




下面是JacksonObjectMapper类
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

/**
 * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {

    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";

    public JacksonObjectMapper() {
        super();
        //收到未知属性时不报异常
        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);

        //反序列化时,属性不存在的兼容处理
        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);


        SimpleModule simpleModule = new SimpleModule()
                .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))

                .addSerializer(BigInteger.class, ToStringSerializer.instance)
                .addSerializer(Long.class, ToStringSerializer.instance)//将Long型的字符串转成String
                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

        //注册功能模块 例如,可以添加自定义序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

  

标签:jackson,FORMAT,算法,mp,new,import,com,id,fasterxml
From: https://www.cnblogs.com/romablog/p/17278057.html

相关文章

  • 解决IntelliJ IDEA 控制台中文乱码问题
    1、修改IntelliJIDEA全局编码、项目编码、属性文件编码上方导航栏“File→Settings…”进入配置页面,在“Editor”中下滑找到“FileEncodings”,分别将GlobalEncoding、ProjectEncoding、Defaultencodingforpropertiesfiles都设置为UTF-8。在重启之后运行程序检查控制......
  • 基于matlab的高精度信号峰值检测算法
    1.算法描述       峰值检验是示波表中数据采集方式之一,这种技术起源于存储深度不能满足捕获毛刺的需要。如果用模拟示波器去观察,只有当毛刺信号是重复性的并且和主信号同步时,才能看到毛刺信号。由于毛刺源于其他电路系统,所以这些毛刺只是偶尔发生,并且和主信号......
  • idea怎么获取静态文件路径
    1、非spring项目和普通项目通用方法:Stringpath=Thread.currentThread().getContextClassLoader().getResource("cc/aa.txt").getPath();  2、spring项目可以用spirng自带的ResourceUtilsFilefile=ResourceUtils.getFile("classpath:note/aa.txt");......
  • m基于强化学习的PID控制器simulink仿真,对比PI控制器和变结构PI控制器
    1.算法描述       PID控制器,即控制器的控制方式为P比例调整,I积分调整以及D微分调整三个部分构成,PID控制器是目前为止应用最为广泛的控制方式。PID控制器具有结构简单,性能稳定,参数设置简单等优势。PID控制器适用于各种控制对象无法进行测量获得系统参数的情况,其根据控制对......
  • m基于PID控制算法的四旋翼无人机飞行控制simulink仿真
    1.算法描述  无人机采用常见的四旋翼无人飞行器,如图1所示。           PID控制器,即控制器的控制方式为P比例调整,I积分调整以及D微分调整三个部分构成,PID控制器是目前为止应用最为广泛的控制方式。PID控制器具有结构简单,性能稳定,参数设置简单等优势。PID控制......
  • prim算法(洛谷P1547)
    P1547[USACO05MAR]OutofHayS模板/*B1682[Usaco2005Mar]OutofHay干草危机洛谷P1547[USACO05MAR]OutofHayS====关键词===================================================prim算法(最小生成树)1.WA,没有加重复边的判断2.加了重复边的判断,还是WA,但分数高了一点3......
  • 共享单车需求量数据用CART决策树、随机森林以及XGBOOST算法登记分类及影响因素分析|附
    全文链接:http://tecdat.cn/?p=28519作者:YiyiHu最近我们被客户要求撰写关于共享单车的研究报告,包括一些图形和统计输出。近年来,共享经济成为社会服务业内的一股重要力量。作为共享经济的一个代表性行业,共享单车快速发展,成为继地铁、公交之后的第三大公共出行方式但与此同时,它......
  • IntelliJ IDEA技巧 格式化代码、有时候代码太乱,手动调整代码代码多的时候太浪费时间了
    系列文章目录文章目录系列文章目录第一步第二步开始使用第一步更改Java等常用代码的展示效果1、打开IDEA左上角File—>Settings。2、选择Editor—>CodeStyle—>Java(可根据实际需要更改语言)。第二步开始使用前面的工作做完之后,这里的格式化代码的快捷键才会出来试试看......
  • 阶段小结:批量删除的时候使用 this.id的详解、jquery里面的$(this)和this的区别、面试
    this.id指的是当前对象的id比如我点击了button那么此button按钮的id就可以用this.id文章目录this.id指的是当前对象的id比如我点击了button那么此button按钮的id就可以用this.id我们先看项目里面方式1:利用样式,可以隐藏,但是不推荐方式二主角this.id方式:给点击删除的时候......
  • 项目一众筹网05_0项目阶段性总结,SSM框架_项目开发注意事项,,不要随意动框架预定好的结构
    系列文章目录文章目录系列文章目录一、框架搭建好之后,项目开发阶段,各就各位,尽量不要新建包名二、mybatis里面sql结束不要带分号三:实体的属性名最好跟数据库的字段保持一模一样,这样mybatis才不会因为大小写什么的而识别不了四:不是主键可以添加唯一约束吗五、idea里面的配置,需要注意......