问题
mybatis中的动态语句如下:
<if test="rate != null and rate != ''"> and rate = #{rate}</if>
当rate等于0,并且是BigDecimal类型的话,执行sql语句的时候发现rate 字段并没有更新
原因
因为mybatis会自动把BigDecimal类型转为string,即把0变为null。主要是rate != ''
这个判断会生效
解决
正确的写法:把rate != ''
删掉
<if test="rate != null"> and rate = #{rate}</if>