一、背景介绍
前端传过来的id与在库里边查出来的id进行对比,如果一致就更新当前的这条记录,如果不一致就插入一条记录,但是在后端判断是否一致的时候,没有将前端传过来的数据和数据库中的数据类型并不一致,但是也进行了比较,导致数据发生了混乱。
代码如下:
二、思路&方案
思考为什么会出现重复插入数据的问题
使用demo查看equals具体实现思路和结果
三、过程
编码:
从结果来看当数据类型不一致的时候,判断的结果是false。
下面来看equals的具体实现原理首先查看Object类中的equals方法
比较的是对象的地址
然后查看包装类中重写的equals方法
显然是比较内容的
四、总结
1.equals方法如果没有进行重写操作的话去比较两个对象的地址,只有对象地址一致才返回true。
2.我们可以非常清晰的看到String的equals()方法是进行内容比较,而不是单纯的引用比较。
五、升华
我们平时在调用String、Integer等包装类型时的equals方法时是比较的内容是否一致而不是地址一是否致,如果是地址一致,那所有的String类型比较都是相等的,所以包装类类型都重写了equals方法。我们可以根据业务场景的不同来选择是否重写equals方法。