使用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}