天天看点

mybatis sum函数返回为null的解决方式,格式化小数千分位的问题

    1.  在mysql语句中,如果sum本身汇总为null,需要设置为0,这样mybatis处理中就不会遇到空指针的错误,只要使用ifnull语句,设置一个默认值即可,如下:

<!-- -2017年5月25日18:35:15 -->
	<select id="getMedicalExpenseStatis" resultType="Map">
	  SELECT count(*) meetCount,IFNULL(sum(c.fee),0.0) meetMoneySum
      from 
        (SELECT * from retire_infor
		) a 
		
        LEFT JOIN 
        
        (select * from retire_infor_visit rt  
		) c on
		
		a.retire_infor_id =c.retire_infor_id
      where a.receiptor=#{receiptor} and c.type =3 and  DATE_FORMAT(c.visitTime,'%Y-%m')=#{month}
	</select>
           

      2.在select语句中,使用到了avg进行算平均值的函数,但是要求保持两位小数,所以想当然了使用了Format函数,可在后台代码段,因为返回的map里面都是字符串,使用Double.parseDouble转换字符串就报错了,因为Format会对数字进行千分位处理,多了逗号",",后来发现可以使用select truncate(4545.1366,2);这个不会自动千分位处理,参考如下例子:

继续阅读