超過 js 的 number 型別最大值(9007 1992 5474 0992)的解決辦法
發現 bug:
點選修改無法展示資訊。修改時呼叫 findOne, 以 id(long) 為引數值,頁面傳的引數是 id=148004249825564000 ,在資料庫中這個 id=148004249825564012,id 出現了錯誤 。
根本原因:
js 的 number 型別的最大值是 9007 1992 5474 0992,2 的 53 次方,這個值是 16 位。
如果超過這個值,那麼 js 會出現不精確的現象。
解決方法:
1.後端傳遞字串型別。
JavaScript 權威指南 中說 js 數字 number 的最長長度是16位,如果數值類變數長度超過 16 位,可以採用 string 字串拼接的方法傳遞變數。
將後端傳遞引數的 long 型別轉為 string 型別,再傳到前端。
如果傳到前端傳的是集合,那麼集合裡每個物件都需要型別轉換。
2.在 userDao 中加入一個欄位
如果專案已經成型並且修改資料庫會造成不可預料的問題那麼可以在 User 物件中再增加一個 String 型別 id 對映欄位,如下
private Long userId;
private String userIdStr;
public String getUserIdStr() {
return this.userId+"";
}
public void setUserIdStr(String userIdStr) {
this.userIdStr = userIdStr;
}
這個方法是比較靠譜的,確實可以正常的顯示資料,查詢單個物件 id 的值都是正確的。但修改使用者時無法獲取前端傳遞的userDao 中的 userIdStr 的值,因為上面的 getUserIdStr() 不能獲取 userIdStr 的值(如果id沒有值)。
3.控制使用者新建記錄時 id 的長度。最後覺得這個方法最方便。
提示:以後設計表欄位時儘量用 varchar 型別。
原帖地址: https://blog.csdn.net/sunmerZeal/article/details/80844843
相關文章
- JS -- number資料型別詳解JS資料型別
- PhpSpreadsheet匯出Excel超過26列解決辦法PHPExcel
- JS中其他資料型別轉為number資料型別的方法JS資料型別
- npm 使用安裝超時的解決辦法NPM
- Gson針對API返回欄位型別不確定的解決辦法API型別
- Oracle的number資料型別Oracle資料型別
- 淺析number型別的值型別
- springboot接收Date型別資料異常與解決辦法Spring Boot型別
- ContenType型別大全(包括Office2007檔案等問題的解決辦法)型別
- 跳過微信過低版本的解決辦法 3.6.0.18
- 公寓噪音的解決辦法
- mysql佔用CPU過高的解決辦法(新增索引)MySql索引
- extractvalue處理XMLTYPE型別超過4000位元組ORA-01706的解決方法XML型別
- MYSQL++ 資料庫連線超時的解決辦法LTMySql資料庫
- sbt下載相關依賴過慢的解決辦法
- 你遇到過的相容性問題以及解決辦法
- JS中的資料型別轉換:String轉換成Number的3種方法JS資料型別
- Js中的NumberJS
- 使用預設pypi源出現連線超時的解決辦法
- 臨時表空間使用率過高的解決辦法
- ORACLE NUMBER資料型別Oracle資料型別
- celery Discarding revoked task: ... 的解決辦法
- git報錯400的解決辦法Git
- Vue 下 ESLint 的 error 解決辦法VueEsLintError
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- 常見的HTTP介面超時問題出現原因及解決辦法HTTP
- jvm:jmap無法dump檔案的解決辦法JVM
- Dcat Admin 向檢視檔案傳遞JS陣列的解決辦法JS陣列
- Android開發過程中遇到的問題以及解決辦法 how toAndroid
- 過擬合和欠擬合以及相對應的解決辦法
- 關於Android檔案數過大,分包問題的解決辦法Android
- Mac截圖軟體CleanShot X 不能識別文字的解決辦法Mac
- VS2019中出現E01104“const char *”型別的值不能用於初始化“char *”型別的實體的錯誤的解決辦法型別
- P9007 題解
- python無法識別命令的解決Python
- idea Git Force Checkout後的解決辦法IdeaGit
- php json提交亂碼的解決辦法PHPJSON
- ORA-04031的傻瓜解決辦法(轉)