返回顶部
首页 > 资讯 > 精选 >MyBatis查询无记录时返回值报错怎么办
  • 560
分享到

MyBatis查询无记录时返回值报错怎么办

2023-06-28 22:06:29 560人浏览 独家记忆
摘要

本篇内容主要讲解“mybatis查询无记录时返回值报错怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyBatis查询无记录时返回值报错怎么办”吧!MyBatis查询无记录的返回值在MyB

本篇内容主要讲解“mybatis查询无记录时返回值报错怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyBatis查询无记录时返回值报错怎么办”吧!

MyBatis查询无记录的返回值

在MyBatis 3.4.1下

如果Dao的返回值是实体,则select查询无记录时返回null。容易报空指针异常!

Notice findById();

如果Dao的返回值是List,则select查询无记录是返回的是[],也就是空数组

而不是null。所以这时候判空需要用CollectionUtils.isNotEmpty(),而不是"==null"

List<Notice> findById();

查询无结果时的返回值报错问题

mybatis的查询无结果时报错

(方法名)queryAllNumFromCart attempted to return null from a method with a primitive return type (long)的问题

queryAllNumFromCart此方法在mapper.xml中是这样定义的:

 <select id="queryAllNumFromCart" parameterType="java.lang.Integer" resultType="java.lang.Long">      select sum(num) from t_cart where user_id = #{userId}  </select>

在mapper中是这样定义的:

long queryAllNumFromCart(Integer userId);  //返回值为long类型

调用后运行报错:

java.lang.RuntimeException: org.apache.ibatis.binding.BindingException: Mapper method 'com.eGoo.mapper.CartMapper.queryAllNumFromCart attempted to return null from a method with a primitive return type (long).
org.apache.ibatis.binding.BindingException: Mapper method 'com.egoo.mapper.CartMapper.queryAllNumFromCart attempted to return null from a method with a primitive return type (long).
    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:94)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
    at com.sun.proxy.$Proxy16.queryAllNumFromCart(Unknown Source)
    at com.egoo.service.impl.CartServiceImpl.getTotalFromMysql(CartServiceImpl.java:370)
    at com.alibaba.dubbo.common.bytecode.Wrapper2.invokeMethod(Wrapper2.java)
    at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:47)
    at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:76)
    at com.alibaba.dubbo.config.invoker.DelegateProviderMetaDatainvoker.invoke(DelegateProviderMetaDataInvoker.java:52)
    at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56)
    at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:62)
    ......

主要报错原因的语句为:

(method)attempted to return null from a method with a primitive return type (long)

此方法企图从定义了原始的返回类型(long)的方法中返回null ,显而易见,此处的返回值类型有问题。网上搜了之后发现是mybais的返回值为包装类,且sql语句的定义的返回值类型为:java.lang.Long。查询数据库为空后,会返回null而不是0L,所以此处需要将方法的返回值类型改为包装类java.lang.Long:

//Long queryAllNumFromCart(Integer userId);  //当查询到的数据为0条时,会返回null,而不是0,可以改为包装类

或者在sql语句中加入IFNULL(expr1,expr2)的函数进行判断:

select IFNULL(sum(num),0) from t_cart where user_id = 1

建议还是使用修改sql语句的方式。

到此,相信大家对“MyBatis查询无记录时返回值报错怎么办”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: MyBatis查询无记录时返回值报错怎么办

本文链接: https://lsjlt.com/news/321099.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MyBatis查询无记录时返回值报错怎么办
    本篇内容主要讲解“MyBatis查询无记录时返回值报错怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyBatis查询无记录时返回值报错怎么办”吧!MyBatis查询无记录的返回值在MyB...
    99+
    2023-06-28
  • MyBatis查询无记录时的返回值问题
    目录MyBatis查询无记录的返回值在MyBatis 3.4.1下查询无结果时的返回值报错问题mybatis的查询无结果时报错MyBatis查询无记录的返回值 在MyBatis 3....
    99+
    2024-04-02
  • mybatis-plus返回查询总记录数方式
    目录mybatis-plus返回查询总记录数mybatis-plus分页查询,总条数为零的解决mybatis-plus返回查询总记录数 mp框架提供了selectCount...
    99+
    2024-04-02
  • 使用php怎么查询返回记录数
    使用php怎么查询返回记录数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PHP查询语句,有两种方法获得查询的总记录数。MySQLi 面向过程的方式$sql =&nb...
    99+
    2023-06-15
  • mybatis-plus返回查询总记录数的方法是什么
    这篇“mybatis-plus返回查询总记录数的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatis-pl...
    99+
    2023-06-26
  • mybatis查询text类型字段时返回Nclob,导致json格式化时报错
    package cn.yuanqiao.archive.common.typeHandler;import com.alibaba.druid.proxy.jdbc.NClobProxyImpl;im...
    99+
    2023-10-11
    mybatis json
  • 怎么解决mybatis一对多查询resultMap只返回了一条记录问题
    本篇内容介绍了“怎么解决mybatis一对多查询resultMap只返回了一条记录问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题描述...
    99+
    2023-06-21
  • 解决mybatis一对多查询resultMap只返回了一条记录问题
    问题描述:因为领导的一个需求,需要用到使用resultMap,很久没使用了,结果就除了点意外。就记录下这个问题 准备两个类:author(作者)和book(书),数据库创建对应的au...
    99+
    2024-04-02
  • Mybatis查询语句条件为枚举类型时报错怎么办
    这篇文章主要介绍Mybatis查询语句条件为枚举类型时报错怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Mybatis查询语句条件为枚举类型报错通常我们对于数据库中一些枚举字段使用tinyInt类型,而java...
    99+
    2023-06-26
  • mybatis查询返回Map<String,Object>类型怎么配置
    这篇文章主要介绍“mybatis查询返回Map<String,Object>类型怎么配置”,在日常操作中,相信很多人在mybatis查询返回Map<String,Object>类型怎么配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-07-05
  • SpringBoot返回Json对象报错怎么办
    小编给大家分享一下SpringBoot返回Json对象报错怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1 需求描述我们现在要干一个什么事情呢,我们要在浏览...
    99+
    2023-06-28
  • mysql怎么查询一段时间记录
    这篇文章主要介绍mysql怎么查询一段时间记录,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql查询一段时间记录的方法:1、查询N天内记录,代码为【WHERE TO_D...
    99+
    2024-04-02
  • SQL怎么返回最大值所在的多条记录
    这期内容当中小编将会给大家带来有关SQL怎么返回最大值所在的多条记录,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SQL 中通过 top 或 limit 子句得到第一条数据不难,再配合排序,就能得到最大的...
    99+
    2023-06-03
  • Spring JDBC新增记录怎么返回自增主键值
    本篇内容主要讲解“Spring JDBC新增记录怎么返回自增主键值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring JDBC新增记录怎么返回自增主键值”吧!在JDBC3.0规范中,当新...
    99+
    2023-06-05
  • Mybatis怎么查询语句返回对象和泛型集合
    这篇文章主要介绍“Mybatis怎么查询语句返回对象和泛型集合”,在日常操作中,相信很多人在Mybatis怎么查询语句返回对象和泛型集合问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis怎么查询语句...
    99+
    2023-06-20
  • mybatis返回map类型数据空值字段不显示怎么办
    这篇文章主要为大家展示了“mybatis返回map类型数据空值字段不显示怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mybatis返回map类型数据空值字段不显示怎么办”这篇文章吧。my...
    99+
    2023-06-29
  • MySQL中怎么查询多条不重复记录值
    今天就跟大家聊聊有关MySQL中怎么查询多条不重复记录值,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。tableid name1 a2 b3 c4 ...
    99+
    2024-04-02
  • Mybatis Plus查询时sql字段名大小写报错怎么解决
    这篇文章主要介绍“Mybatis Plus查询时sql字段名大小写报错怎么解决”,在日常操作中,相信很多人在Mybatis Plus查询时sql字段名大小写报错怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-06-21
  • oracle查询存储过程执行记录时间怎么查
    在 oracle 中,可以通过以下方法查询存储过程执行记录时间:使用 dbms_profiler 包获取执行统计信息。使用 v$profiler 视图获取正在执行的 sql 语句和 pl...
    99+
    2024-04-19
    oracle
  • oracle怎么查询时间段内的数据记录
    使用 oracle 查询时间段内的数据记录可通过 between 操作符实现,语法为:select * from table_namewhere column_nam...
    99+
    2024-05-13
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作