话不多说,先上一段代码:
最近改bug或者做需求的时候遇到相当糟心的代码,我们和数据库打交道采用的是ibatis框架,截图的代码是有问题的,可以看到bean 的变量 **discount_unit_price** 是通过基本类型声明的,这样会有个问题,基本类型的变量如果没有赋值,默认会有一个初始值,这边 **discount_unit_price** 如果没有赋值的情况下,默认是0。而 **updateExchangeOrder()** 里面虽然在构造的 **ExchangeOrder** 对象的时候,虽然业务上看起来是没有对 **discount_unit_price** 做更新的处理,xml 里面也做了非空判断,一切看起来好像都没有问题, 但是忽略了 **discount_unit_price** 基本类型初始值为0的情况,导致每次调用这个方法,都会将原有的 **discount_unit_price** 的值覆盖为0。
````````````xml
refund(0, "退货"),
resend(1,"补发"),
exchange(2,"换货"),
other(3,"其他"),
refundOnly(4,"仅退款");
/** 状态值 */
public final int type;
/** 标签 */
public final String label;
}