Mybatis中IFNULL(P1,P2)函数的用法;

问题:Mybatis中IFNULL(p1,p2)函数怎么用? 

带着问题我们根据场景分析Mybatis函数 IFNULL函数的用法,希望能帮助大家理解,场景功能实现:查询购物车已勾选的商品数量;

CartMapper

int selectCartProductCountByUserId(@Param("userId") Integer userId);

CarttMapper.xml

那么,这里为什么需要使用IFNULL函数来做判断呢?细心观察这里存在一个隐患,selectCartProductCountByUserId()方法的返回值类型是int型,当查询结果为null的时候,就会发生空指针异常,所以避免隐患的发生,Mybatis在使用IFNULL条件语句时, 如果IFNULL(P1,P2), 如果查询得到P1是null, 那么该字段就会被赋值为P2,也就是说当sum(quantity)为null时,结果count字段会被赋值为0,否则值为sum(quantity),另外需要注意sum(quantity,0),sum的后面不能有空格,如何写错成sum (quantity,0),Mybatis同样也会报错,这个很容易马虎写错,而且也这个错误也很难分析,都是自己躺的浑水55555,希望看了的小伙伴能避坑!!

另外一个方法,如果你不想使用IFNULL函数,可以将方法返回值定义成Integer封装类型,也就是:

Integer selectCartProductCountByUserId(@Param("userId") Integer userId);

这样即使返回值为null,也不会报空指针异常,这样好理解了吧!!

 

你可能感兴趣的:(Mybatis中IFNULL(P1,P2)函数的用法;)