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

使用MyBatis查询一个int类型的字段,若查询不出结果,返回NULL值后会报异常。例如,用SELECT name FROM user WHERE id = #{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 (int).

若遇到该问题,可使用MySQL的IFNULL函数和MAX函数,将返回的NULL值转换为0。例如,可将上述SQL语句改为:
SELECT IFFULL(MAX(name),0) AS name FROM user WHERE id = #{id}

发表评论

电子邮件地址不会被公开。 必填项已用*标注