使用MyBatis查询int或者long类型字段,返回NULL值时报异常的解决方法

使用MyBatis查询一个long类型的字段,若查询不出结果,返回NULL值后会报异常。

例如,用select  friendTop from user where uid=#{id}

进行查询,若传入的id值在数据库中不存在,语句将返回NULL,此时MyBatis会报如下异常:
org.apache.ibatis.binding.BindingException: Mapper method 'com.XXXXX' attempted to return null from a method with a primitive return type (long).

若遇到该问题,可使用MySQL的IFNULL函数和MAX函数,将返回的NULL值转换为0。例如,可将上述SQL语句改为:

select  IFNULL(MAX(friendTop),0) AS friendTop from user where uid=#{id}

你可能感兴趣的:(使用MyBatis查询int或者long类型字段,返回NULL值时报异常的解决方法)