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