Spring与Mybatis整合过程中的问题

废话不多说。我们首先看两个配置文件的图片(上面是Mybatis配置文件Mybatis-configuration 下面是Spring整合Mybatis的配置文件Spring-Mybatis-configuration)。你们来看看有什么问题

下面是mybatis的配置文件

下面是Spring整合Mybatis的配置文件

 这样写有什么后果呢? 当然啦 会报错 但是原因是什么呢?

首先我们在Mybatis里面配置了package  这样Mybatis就会去扫描com.zsy.mapper下面的所有的映射文件 (这是我们的第一次扫描)

之后我们又在配置sqlSessionFactory时给它指明了映射文件的位置  所以不管怎么 它似乎又去读取了一遍?  这样会报什么错呢?

就是这个 !!!万恶的加载Spring上下文错误的错误:

java.lang.IllegalStateException: Failed to load ApplicationContext

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.SqlSessionFactoryBean#0' defined in class path resource [spring.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\Users\张世宇\Desktop\SSMCRUDRESTFUL\target\classes\com\zsy\mapper\DeptMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.zsy.mapper.DeptMapper.BaseResultMap

 就这个东西 我甚至调试了五个小时!  结果 就是因为这里的两个配置段写重复了!!!上网百度对于这个异常的相关的解决方法 原来就是因为这个!! 上面异常说的是结果映射集已经包含了对应的xml映射文件   

希望能够帮助到大家解决对于 ApplicationContext异常的处理  真的坑!!!!!

补充一下!!十分重要(如果你是IDEA MAVEN项目 并且  你在Mybatis里面<mappers>标签使用package来扫描Mybatis相关的Dao层接口的xml映射文件  那么你必须把对应的xml映射文件和接口类放在同一个包下!!! 那么既然你把xml放在了包里面 你说 IDEA会为把你的xml放在classes里面么  当然不会 因为IDEA MAVEN项目只把.java文件打包到classes文件夹里面  因此你必须在pom.xml文件中加入下面的配置 (放在build标签里面))

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
        <!--默认是true-->
        <!--<filtering>true</filtering>-->
    </resource>
</resources>

这样 他就会把你的xml映射文件也放在classes文件夹里面 这样你才能够访问和使用这些映射文件........

SSM整合搭建真的是新人杀手!!!!!/(ㄒoㄒ)/~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值