
问题
在Mybatis中,遇到入参类型为BigDecimal时,不为0的情况下用!=''方法可以正常判断,
但值为0时使用 !=''判定会出现问题。
BigDecimal fine_cash=new BigDecimal("0");//违约金
String bill_id="1001";
tmap.put("bill_id",bill_id);
tmap.put("fine_cash",fine_cash);
monthBillDAO.updateByBillID(tmap);//执行mybatis的SQL语句
update t_month_bill less_cash=#{less_cash}, where bill_id=#{bill_id};fine_cash=#{fine_cash}, shou_cash=total_cash+#{fine_cash},
以上执行时,不会进入违约金字段的if代码段中。
解决方案
1.去除if代码段中的and fine_cash !=''判定,改为
2.传入前先将fine_cash值转换为String类型
BigDecimal fine_cash=new BigDecimal("0");//违约金
tmap.put("bill_id",bill_id);
tmap.put("fine_cash",fine_cash.toString());
monthBillDAO.updateByBillID(tmap);//执行mybatis的SQL语句