Mybatis报错:Cause: org.apache.ibatis.builder.BuilderException.Could not find resource xx.xml

最近两天在使用Spring+MyBatis进行练习时,报错:

Exception in thread “main” java.lang.ExceptionInInitializerError
at Dao.MyTest.main(MyTest.java:12)
Caused by: org.apache.ibatis.exceptions.PersistenceException:
Error building SqlSession.
The error may exist in xx.xx.xml
Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource xx.xx.xml【问题在于找不到某包下的自定义的xml文件】
**报 Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource Dao.UserMapper.xml的错误**
项目结构

找到的解决办法有:

1.maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案为将如下代码块添加到项目的pom.xml当中,项目中的主工程应该放一份,为了保险起见,子项目中也放一份:

<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

添加以后得到新的错误:
***在build这出现了报错***
检查后发现是因为pom.xml中上面已经有了一个,整理后将resources移至上面的build中,pom.xml中的报错消失。
继续运行MyTest,还是原来的错误。
2.此时,经过网上查询,将XML文件的编码格式encoding="UTF-8"换成encoding=“GBK”,仍旧不成功,依旧报错。更改编码格式可见如下链接。
Caused by: org.apache.ibatis.exceptions.PersistenceException
**3.经过报错问题的分析,Error parsing SQL Mapper Configuration (解析SQL Mapper配置时出错), Can’t find the custom xml file under a certain package。说明了在核心文件MyBatis-config.xml中配置映射文件UserMapper.xml这里出现了问题。最后通过此链接Mybatis报错(坑):Could not find resource com.mycode.dao.UserMapper.xml部分问题得以解决。
分析我的错误在于:
出错的代码
使用MyBatis 需要在核心配置文件当中注册Mapper.xml,其中注册的方式有以下三种:

<!--每一个Mapper.xml都需要在MyBatis核心配置文件中注册-->
<mappers>
    <mapper resource="com/kuang/dao/UserMapper.xml"/>
</mappers>
<!--每一个Mapper.xml都需要在MyBatis核心配置文件中注册-->
<mappers>
    <mapper class="com.kuang.dao.UserMapper"/>
</mappers>

<mappers>
    <package name="com.kuang.dao"/>
</mappers>

一定要注意
接口和他的Mapper配置文件必须同名
接口和他的Mapper配置文件必须在同一个包下

说明“.”“/”这两个符号要在Java中注意一下!!!
斜杠是目录结构,java的包名对应的目录结构也是父子文件的结构

修改一个符号后,再次运行后,得到如下新的报错:Cannot invoke “org.apache.ibatis.session.SqlSessionFactory.openSession()” because “Utils.MybatisUtils.sqlSessionFactory” is null新的报错
找问题,sqlSessionFactory" is null,回到MybatisUtils类查看代码,在这里插入图片描述
注意,此处找到问题,多写了一个类名,方法里本应该执行静态私有SqlSessionFactory类的 sqlSessionFactory。改正后,在这里插入图片描述
运行成功
运行成功!【记录一下刚刚学习框架的自己犯的小毛病】

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值