mybatis中查询结果为空时不同返回类型对应返回值

Posted 壹佰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中查询结果为空时不同返回类型对应返回值相关的知识,希望对你有一定的参考价值。

今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同类型,查询结果为空时dao接口的返回值是一样的吗?接下来我就总结一下常见的几种情况。

第一种:resultType为基本类型,如string(在此暂且把string归纳为基本类型)

  如果select的结果为空,则dao接口返回结果为null

第二种,resultType为基本类型,如int

后台报异常:
org.apache.ibatis.binding.BindingException: Mapper method ‘com.fkit.dao.xxDao.getUserById attempted to return null from a method with a primitive return type (int).
解释:查询结果为null,试图返回null但是方法定义的返回值是int,null转为int时报错
解决办法:修改select的返回值为String

第三种 resultType为类为map ,如map、hashmap

  dao层接口返回值为null

第四种 resultType 为list ,如list

  dao层接口返回值为[],即空集合。

注意:此时判断查询是否为空就不能用null做判断

第五种 resultType 为类 ,如com.fkit.pojo.User

  dao层接口返回值null

以上是关于mybatis中查询结果为空时不同返回类型对应返回值的主要内容,如果未能解决你的问题,请参考以下文章

结果为空时LINQ返回啥

mybatis学习----------查询数据库返回结果为空

spring boot加mybatis使用Map返回时,当值为空时属性也会没有(转)

使用MyBatis查询 返回类型为int,但是当查询结果为空NULL,报异常的解决方法

mybatis hashmap 输入键值对为空时,key 丢失

当结果不为空时,num_rows() 未返回正确的行数