MyBatis使用Mapper查询时报错:java.lang.StringIndexOutOfBoundsException: String index out of range: 8000

丶灬走出姿态 提交于 2019-12-08 07:18:18

SpringBoot项目做订单查询接口开发,使用Mybatis的Mapper做查询的时候,抛出异常

java.lang.StringIndexOutOfBoundsException: String index out of range: 8000

错误信息指向了响应查询请求的Controller之后没有更具体的错误信息,一路跟踪,最后指向我定义的mapper的查询方法,但是我这个方法内没看到可能导致越界问题的代码段,似乎是mybatis抛出的错误。

List<OrderEntity> resultList = orderMapper.selectOrderByOrderId(orderId);

网上查了一堆资料,基本上都是在说定义了sql语句的xml文件中有错误,检查了一遍,没出现网上所说的单双引号,美元符和井号导致的问题。

把sql语句拉出来单独跑,可以跑通,说明不是sql的问题,但可以定位应该是OrderMapper.xml的问题。

仔细检查了一遍定义sql的OrderMapper.xml文件,发现OrderMapper.class在OrderMapper.xml文件中的注册包路径不对。

因为我没有使用下面这种整个package注册mapper接口文件的形式,因此我在xml文件中注册mapper的class需要写到具体的mapper而不是写到mapper的所在包。

<!-- 注册整个包下面的mapper类,Register all interfaces in a package as mappers -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

修改了xml中mapper的namespace注册语句,问题解决!

修改内容:

<mapper namespace="com.xxx.xxxx.order.mapper">

改为

<mapper namespace="com.xxx.xxx.order.mapper.OrderMapper">

这个错误信息还可能是其他问题导致的,基本上都是xml文件的问题,本文只写明本人所遇到的情况,希望能帮到和我遇到一样问题的人。

 

始发于个人博客:

http://www.lanx86.fun/mooyu2/viewblog?bId=10

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!