当前位置: 首页 > article >正文

SpringBoot 解决id使用字符串类型可以解决精度问题

1. 问题引入

当主键超过19位长度的数值型的属性值后三位会被四舍五入

2. 使用雪花算法解决 

雪花算法长度最大只有19位的10进制,所以不会丢失精度问题!
SpringBoot 解决主键雪花算法配置icon-default.png?t=N2N8https://liush.blog.csdn.net/article/details/129779627

①  application.yml 全局配置文件

mybatis-plus:
  global-config:
    db-config:
      id-type: assign_id

② 指定单一注解使用

@TableId(type = IdType.ASSIGN_ID) // 注解指定设置雪花算法
private Long id;

3. 使用属性设置String类型解决

@TableId(type = IdType.ASSIGN_ID) // 注解指定设置雪花算法
private String id;

4. 使用 Jackson 注解

设置 Jackson 转换对象为 json字符串时 Long类型的 id属性转为字符串 处理

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

5. 使用 Jackson 配置类

@Configuration
public class JacksonConfig {
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {

        return jacksonObjectMapperBuilder -> {
            jacksonObjectMapperBuilder.serializerByType(Long.TYPE, ToStringSerializer.instance);
            jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);
            jacksonObjectMapperBuilder.serializerByType(BigInteger.class, ToStringSerializer.instance);
            jacksonObjectMapperBuilder.serializerByType(BigDecimal.class, ToStringSerializer.instance);
        };
    }
}

http://www.kler.cn/a/3561.html

相关文章:

  • C++ Primer第五版_第六章习题答案(41~50)
  • 【数据结构篇C++实现】- 堆
  • python 使用pyshp读写shp文件
  • 3.数组算法、动态规划
  • 模型压缩-网络量化概述
  • 3.OSPF与BGP的联动
  • 我用Python django开发了一个商城系统,已开源,求关注!
  • python flask项目部署
  • 电路基础_模拟电路_问答_2023_01
  • JSON.stringify() 的 5 种使用场景
  • 【Docker】MAC电脑下的Docker操作
  • SQL注入之HTTP请求头注入
  • 浅谈计算机视觉HALCON视觉库识别车牌号
  • 【TopK问题】——用堆实现
  • Python解题 - CSDN周赛第40期
  • Linux基础
  • 【C语言】柔性数组
  • 【数据结构】顺序表的深度刨剖析
  • 批量保存网页为单个网页文件
  • 【差分数组】