1. Mybatis官方ID生成策略的问题
我们知道,mybatis-plus官方提供了很多ID生成策略
官方地址
而其中个人觉得性能上最好的当属ASSIGN_ID,该策略能够得到一个19位的Long类型的值,Long类型的值天然有序,能很好的支持数据库的索引,所以我个人在工作中一般会把ID类型设置为bigint(mysql),然后在代码中使用这个策略。
那么这个策略有什么问题呢?生成的19位对于java long
类型来说没有任何问题,问题在于我们给前端返回的时候,前端js最长只能支持到17位的数值类型,后面两位会补0,也就是说,比如一条数据的ID为:133470684736716869,到前端看起来就会变成1334706847367100,这就导致后续的业务会报错。
2. 解决方案
现在你知道了问题的原因在于JS无法解析19位这么长的数值类型,那么有两种解决方案
- 不给前端返回数值类型,把数值类型转化为字符串类