org.apache.ibatis.exceptions.PersistenceException 错误日常解决分析

解析
出现这个org.apache.ibatis.exceptions.PersistenceException问题大多数都是找不到映射文件,这和没有遵循mybatis的mapper代理配置规范有关
例如:
1、文件读写出现问题,系统找不到这个文件

2、mapper接口与映射的mapper.xml 的命名是否一致,是否在同一目录下。

3、SqlMapConfig.xml配置文件加载mapper接口文件的路径有错误(一般有两种方试,第一扫描

类第二种批量扫描加载:选择扫描包< package name=“包名” / >)

4、使用mapper代理方法开发mapper接口时mapper.xml中的namespace与mapper接口的类路径相

同,忘记写namespace也会报该异常。
5、在mapper.xml里面resultMap的Type用到那个实体类名的话就要把包名也写上去
6、开发mybatis动态代理时要注意四点开发规范:

1.接口 方法名 == User.xml 中 id 名

2. 返回值类型 与 Mapper.xml文件中返回值类型要一致

3.方法的入参类型 与Mapper.xml中入参的类型要一致

4.命名空间 绑定此接口

看到这些原有基础的解析,就会对自己的错误大概有了一点的理解:找不到映射文件
因为我本身框架使用没有mapper.xml文件,所以以上细节错误并不是我的错误。Springboot框架下是先创建Controller文件,注入Service,再创建Service层,注入dao层,检查过每一层的配置文件之后,发现还是没有问题,那么为什么文件映射失败了呢?

最后终于发现了是类型不匹配的问题,如图:
这里并没有在List后面加上范性类型,而我们声明上时Address类型,事实上,这么写并不会报错,但是就会造成我们映射的文件无法找到的问题!
在这里插入图片描述
总结:每一层数据类型的注入都是十分重要的,代码逻辑的严密性很重要。

————————————————
感谢CSDN博主「宜春」
原文链接:https://blog.csdn.net/qq_44543508/article/details/96894891

猜你喜欢

转载自blog.csdn.net/Alian_auerua/article/details/130981806