mybatis莫名报错java.lang.NullPointerException

今天在使用mybatis和oracle数据库执行操作时,莫名其妙的报错:

严重: Servlet.service() for servlet [spring] in context with path [/crm] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.NullPointerException
### The error may exist in file [F:\apache-tomcat-9.0.6\webapps\crm\WEB-INF\classes\mapper\crm\order\CrmShopOrderMapper.xml]
### The error may involve CrmShopOrder.findShopOrderAnalysis
### The error occurred while handling results
### SQL: SELECT    A.ORDER_NUM,    A.MONTHS,    A.PRODUCTCODE,    A.PRODUCTNAME,    A.CATEGORY_NAME,    A.TOTALAMOUNT,    B.TOTALAMOUNT_SUM,    B.ORDER_NUM_COUNT   FROM   (    SELECT      COUNT(A.MERGE_CODE) ORDER_NUM,     TO_CHAR(A.CREATED_TIME,'MM') MONTHS,     B.PRODUCTCODE,     B.PRODUCTNAME,     D.CATEGORY_NAME,     A.TOTALAMOUNT    FROM MALL_ORDER A     LEFT JOIN MALL_ORDER_PRODUCT B ON B.ORDER_ID = A.ID    LEFT JOIN MALL_PRODUCT C ON C.ID = B.PRODUCT_ID    LEFT JOIN MALL_CATEGORY D ON D.ID = C.MALLCATEGORY_ID    WHERE              A.CREATED_TIME BETWEEN TO_DATE(?, 'yyyy-mm-dd hh24:mi:ss') AND TO_DATE(?, 'yyyy-mm-dd hh24:mi:ss') AND A.STATUS = 1            GROUP BY A.CREATED_TIME,B.PRODUCTCODE,A.TOTALAMOUNT,B.PRODUCTNAME,D.CATEGORY_NAME   ) A   LEFT JOIN   (    SELECT     SUM(TOTALAMOUNT) TOTALAMOUNT_SUM,     COUNT(ORDER_NUM) ORDER_NUM_COUNT,     A.MONTHS    FROM    (     SELECT       COUNT(A.MERGE_CODE) ORDER_NUM,      TO_CHAR(A.CREATED_TIME,'MM') MONTHS,      B.PRODUCTCODE PRODUCTCODE,      B.PRODUCTNAME PRODUCTNAME,      D.CATEGORY_NAME CATEGORY_NAME,      A.TOTALAMOUNT TOTALAMOUNT     FROM MALL_ORDER A      LEFT JOIN MALL_ORDER_PRODUCT B ON B.ORDER_ID = A.ID     LEFT JOIN MALL_PRODUCT C ON C.ID = B.PRODUCT_ID     LEFT JOIN MALL_CATEGORY D ON D.ID = C.MALLCATEGORY_ID     WHERE               A.CREATED_TIME BETWEEN TO_DATE(?, 'yyyy-mm-dd hh24:mi:ss') AND TO_DATE(?, 'yyyy-mm-dd hh24:mi:ss') AND A.STATUS = 1             GROUP BY A.CREATED_TIME,B.PRODUCTCODE,A.TOTALAMOU

经过排查,发现有一个数据库字段是DOUBLE类型,而mybatis的select语句中参数类型和结果类型都是map,不是返回实体,由于数据库底层的原因会导出报错NullPointerException。

解决方法:在sql语句中对DOUBLE类型的字段进行类型转换,转换为number类型;或者修改数据库该字段的类型为number类型

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值