mybatis 一些我遇到的报错原因

mybatis报错的原因有很多,但是我发现我遇到的原因和网上能搜到的都不一样,所以在这里总结一下。

Invalid bound statement (not found)

1. parameterMap 错误
  • 错误地点:mapper.xml中的parameterMap配置错误。
  • 特点:一个配置错误就会导致所有对MySQL的读写都会报错,错误原因都是Invalid bound statement (not found)

今天为项目添加了一个新的数据表,以及一个新的mapper.xml。添加过后就开始报该错误。并且不止新添加的mapper,所有对数据库的读写操作都开始报错误。原因是因为有一个parameterMap没有对应上,导致整个mybatis都运行不了,不知道是不是因为这个版本的mybatis有问题,将parameterMap改正后就没有再报错了。

2. 新建的mapper文件未被纳入配置文件
  • 错误地点:mybatis.xml
  • 特点:老的mapper.xml文件运行正常,就自己加的不正常,且语法错误不会报错。
  • 改正方式:在mybatis.xml中添加自己新建的mapper.xml,其代码格式如下:
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<mappers>
		<mapper resource="com/api/dao/MCT_DaoMapper.xml" />
		<mapper resource="com/api/dao/MO_DaoMapper.xml" />
		<mapper resource="com/api/dao/MOL_DaoMapper.xml" />
		<mapper resource="com/api/dao/MOS_DaoMapper.xml" />
		<mapper resource="com/api/dao/这里加上自己新建的mapper" />
	</mappers>
</configuration>

这是我在修改jar包项目时遇到的,它通过在src/main/java/中的mybatis.xml文件来引入所有的mapper,在网上搜索这个异常搜了好久,最后还是靠自己找到了解决方法。

3. name space 错误
  • 特点:按住Ctrl点击无法跳转到对应的接口类。

有可能是mapper下的namespace错误导致的。
可以在一下位置打上断点,查看mybatis从xml中所加载的所有方法。
在方法org.apache.ibatis.session.Configuration.getMappedStatement()
效果图如下:东西都在该变量下。
在这里插入图片描述

java.lang.UnsupportedOperationException

  • 错误地点:mapper.xml所对应的接口类缺少注解。
  • 特点:无明显特点。
  • 改正方式:在接口类中加入@Param("set")注解。

接口类如下:
在xml中用<foreach>来循环batchIds,其中collection="batchIds"

//错误方法:
List<Map<String, Object>> getListByBatchIds(Set<Long> batchIds);
//正确方法:
List<Map<String, Object>> getListByBatchIds(@Param("batchIds") Set<Long> batchIds);

我一直以为只有一个参数的时候就不用加注解了,没想到对于集合来说不行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值