奇怪的响应数据

本文讲述了在使用SpringBoot与Mybatis-Plus开发中,前端接收到的Long类型ID精度丢失问题,通过分析发现是由于ID长度超过number类型限制,最终通过将ID转换为String类型解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

使用SpringBoot+Mybatis-plus时返回到前端的数据后端查询的结果不一致


问题描述

后端接口怼完了,给前端一返回,发现给下个请求的参数查不到数据,我看数据库是有的,就就发现了这个奇怪的问题

先看一下前端浏览器的结果吧:

  1. 这是浏览器请求后得到的原始数据
    在这里插入图片描述
  2. 这是浏览器请求后得到的预览数据

    发现:结果不一样,预览数据和我用 console.log()打印请求结果的数据一样

再来看看我后端Debug的样子:

查询的结果正常,正常的id字段值就是这个1513205139986870274

再来看看swagger的请求结果:

这里的id字段的值浏览器预览的值即前端使用的结果)是错误的

再看下Postman的请求结果:

Postman 请求的结果是正确的

到这里是不是感觉特别奇怪,有的小伙伴可能已经猜到原因了,但是我不知道,(哭~~)


原因分析:

经过了 一圈的询问,发现了原因,就是这个id字段的类型是Long 返回给前端后,前端识别为了number类型,但是这个id的长度超过了number类型的长度,所以才导致了精度的丢失(也就是上面的数据不一致的问题)


解决方案:

将后台的id字段处理成字符串类型Long->String);
我这里就直接修改数据库(varchar)实体类的类型(String)


就此完美解决~~~~

### P1135 奇怪的电梯 Java 解决方案 对于题目描述中的奇怪电梯问题,在给定条件下,目标是从当前楼层移动到特定的目标楼层。此问题可以通过广度优先搜索 (BFS) 来有效求解[^1]。 #### 广度优先搜索简介 广度优先搜索是一种用于遍历或搜索树或图的数据结构算法。该方法从根节点开始,依次访问其邻接节点并记录已访问状态,直到找到解决方案为止。这种方法特别适用于寻找最短路径的问题。 针对本题而言,可以将每一层楼视为一个节点,并通过加减按钮来构建边连接这些节点。由于每次操作仅能增加或减少固定层数,因此适合采用队列实现 BFS 进行层次化探索。 #### 实现思路 创建一个队列用来存储待处理的状态(即所在楼层),同时维护一个布尔数组标记哪些楼层已经被访问过以防止重复计算。当到达目的楼层时返回步数;如果无法抵达则输出相应提示信息。 下面是具体的 Java 代码实现: ```java import java.util.*; public class StrangeElevator { static final int MAXN = 1000; static boolean[] visited; public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt(); // 总共n层楼 int k = sc.nextInt(); // 每按一次上升k层 或 下降k层 int startFloor = sc.nextInt(); int endFloor = sc.nextInt(); if(startFloor == endFloor){ System.out.println(0); continue; } Queue<Integer> queue = new LinkedList<>(); Arrays.fill(visited, false); bfs(n, k, startFloor, endFloor, queue); } sc.close(); } private static void bfs(int n, int k, int startFloor, int endFloor, Queue<Integer> queue){ int steps = 0; queue.offer(startFloor); visited[startFloor] = true; while(!queue.isEmpty()){ int size = queue.size(); for(int i=0;i<size;++i){ int currentFloor = queue.poll(); if(currentFloor==endFloor){ System.out.println(steps); return ; } int nextUp=currentFloor+k<=n ? currentFloor+k : -1; int nextDown=currentFloor-k>=1 ? currentFloor-k : -1; if(nextUp!=-1 && !visited[nextUp]){ queue.add(nextUp); visited[nextUp]=true; } if(nextDown!=-1 && !visited[nextDown]){ queue.add(nextDown); visited[nextDown]=true; } } ++steps; } System.out.println("Impossible"); } } ``` 上述程序实现了基于广度优先搜索策略解决奇怪电梯问题的方法。初始化阶段读取输入参数后立即判断起点终点是否相同以便快速响应特殊情况。之后利用队列模拟逐层扩展的过程直至发现目的地或者确认不可达情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值