天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。

使用mybatis查询时报“Could not find result map java.lang.Long”

往事如烟 2433次浏览 0个评论

在使用mybatis做查询时,报了“Could not find result map java.lang.Long”异常错误,简单记录下。

报错信息

org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Long
at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:346)
at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:290)
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:109)
at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:775)
at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:745)
at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:740)
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:217)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
at com.sun.proxy.$Proxy97.registCount(Unknown Source)

主要原因

排查了一下,这里主要是因为在mapper.xml中,使用了resultMap,而resultMap主要用于将查询字段和对象的映射,而我们的sql查询结果希望是一个数值类型,这里主要是返回Long对象(也可以返回基本数据类型long)

处理方法

将resultMap修改为resultType即可,有时候修改了对应接口的标签属性之后,仍然报错,这个时候就要排查一下是不是mapper.xml其他地方出现了同样的错误,如果出现同样的错误,就算调用的不是当前的接口,也会报错。


ITZOO版权所有丨如未注明 , 均为原创丨转载请注明来自IT乐园 ->使用mybatis查询时报“Could not find result map java.lang.Long”
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址