在进行计算的时候,我们很容易忽略一个问题,那就是 null+1=null
解决办法:
1、首先要修改数据库,让数值类型的默认值尽量为0 而不是null
2、在执行update之前我在查询的时候做了下判断如下;
UPDATE Table
<isNull property="count">
----count由外部传进来,虽然这样做不怎么好,就是提供一个思路
SET COUNT=0+#count:DECIMAL#
</isNull>
<isNotNull property="count">
SET count=count+#count:DECIMAL#
</isNotNull>
where id=#Id:DECIMAL#
3、在网上找到一个方法,代码如下,由于内部封装或版本原因,并没有使用如下代码,如果条件允许你们可以尝试下
<trim prefix="SET"suffixOverrides=",">
<if test="prodCollectCount ==null">
PROD_COLLECT_COUNT=0+#count:DECIMAL#
</if>
<if test="prodCollectCount !=null">
PROD_COLLECT_COUNT=PROD_COLLECT_COUNT+#count:DECIMAL#
</if>
</trim>