今天测试别人写的代码的时候,遇到了一个bug。后来百度一下,说是一个类型的结果值强加到另一个类型的对象属性上,简单的说就是类型不匹配,mybatis 设置值的时候报错。其实大神们看到这里肯定想到就是实体类出错了,当时我也是这么想的,但是发现这个实体类与优化之前差不太多的。字段的属性并没有改变的。唯一改变大的就是SQL了。然后.... 这个sql吧,贼鸡儿绕,这里贴出出错部分
图片中被标出来的地方就是导致此次错误的原因,因为在实体类里用的是Double 类型的,使用这个decode函数做判断的时候,把值给改成了String类型的了.....也是服了这个SQL的复杂程度。不过这也说明在使用函数的时候,要仔细认真,不能光把函数语法写对了就OK了,还有最关键的是在PL\SQL运行成功的sql,让程序跑可不一定就对了。这也是我第一次遇到这种在PL\SQL中运行是正常的,程序跑出错的。
然后这个错误的改法就是确保这些函数判断的结果一定得是数值类型,不然按照这个SQL的写法把double类型换成了String了,那就依它,把涉及到判断的实体字段也改成String好了。 我想应该不会有人会犯这种错误吧 = ,= 但是还是在这里记录一下。