最全解决方案:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.
作者:mmseoamin日期:2023-12-21

最全解决方案:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.

📢CSDN博客主页:低山高梧桐-致力于做最优质的内容

📢如果涉及到版权问题,烦请联系作者删除!

📢如果文章有谬误,烦请您指出斧正,作者致力于做最好的博客。

📢整合:低山高梧桐 首发于CSDN 欢迎点赞👍收藏⭐留言打扰📝

温馨提示各位:

一定要学会读控制台里的报错信息,能够起到事半功倍的效果!

首先需要检查数据库配置文件中的这几样有没有错误:

1、用户名以及密码

2、驱动名称

3、数据库的ip、端口号和数据库名称

4、数据库中有没有要操作的表

这里的检查要仔细,看一下有没有错字和中文标点

如果不是这些问题,那可能是以下问题,还请逐个排查

一、yml等数据库配置文件重名

报错信息:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'Y7000'@'localhost' (using password: YES)
### The error may exist in file [D:\从零开始\spring\bj-SpringStudy-Mybatis01\bj-SpringMybatis-01\target\classes\com\jcjava\mapper\UserMapper.xml]
### The error may involve com.jcjava.mapper.UserMapper.insertUser
### The error occurred while executing an update
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'Y7000'@'localhost' (using password: YES)

yml中的配置名有冲突,但是概率较小,不推荐先尝试

统一将配置名添加jdbc.

既将原先的配置文件名称

最全解决方案:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.,在这里插入图片描述,第1张

改为下面的配置文件名称,统一添加上jdbc.

最全解决方案:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.,在这里插入图片描述,第2张

最后不要忘记在applicationContext.xml等文件中${}中的数据加上jdbc.

二、单元测试路径名称和实际项目中路径不一样

由于我是使用框架生成的代码,所以生成的路径和测试路径不一样

也就是图中这两个部分的文件树形结构要一致

最全解决方案:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.,在这里插入图片描述,第3张

否则会报错

三、SQL与映射相关

就这里就很多了,需要根据控制台的输出信息逐个排查

(一)可能是SQL语句本身写错了

(二)可能是mybatis的映射文件写错了

如题,结合控制台的输出信息,了解到是MyBatis的映射出现了问题

原博主是标签写错了

https://blog.csdn.net/2302_77182979/article/details/134674756

上面是原博主的链接,请移驾

(三)可能是MyBatis映射文件中映射结果写错了

原因分析
  1. SQL 语句写错了。此处SQl没问题。
  2. mapper配置文件中的结果集写错了,假如返回的结果集是多个JavaBean,那么resultType=”javaBean”, 例如:查询Department的List列表,resultType应该写成Department的全类名而不是java.util.List
错误示范:



  
  
 
正确代码:



  
  
 

上面的resultType的结果前后不一致

请移驾原博主的博文

https://blog.csdn.net/qq_32106647/article/details/79081278

(四)其他类型

其他的所有类型都基本和MyBatis映射文件有关

所以你需要检查包括但不限于:

1.参数&结果

2.标签

3.SQL本身

所以说,还是需要会读报错信息的,直接领先同辈10年

鸣谢&参考

https://www.cnblogs.com/-LilyBlog-/p/7670393.html

https://blog.csdn.net/weixin_50843918/article/details/130674960

https://blog.csdn.net/qq_32106647/article/details/79081278

https://blog.csdn.net/2302_77182979/article/details/134674756

https://blog.csdn.net/LJCC_c/article/details/111963923