Spring与Mybatis整合过程中的问题

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

下面是mybatis的配置文件

Spring与Mybatis整合过程中的问题_第1张图片

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

Spring与Mybatis整合过程中的问题_第2张图片

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

首先我们在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里面标签使用package来扫描Mybatis相关的Dao层接口的xml映射文件  那么你必须把对应的xml映射文件和接口类放在同一个包下!!! 那么既然你把xml放在了包里面 你说 IDEA会为把你的xml放在classes里面么  当然不会 因为IDEA MAVEN项目只把.java文件打包到classes文件夹里面  因此你必须在pom.xml文件中加入下面的配置 (放在build标签里面))


    
        src/main/java
        
            **/*.xml
        
        
        
    

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

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

你可能感兴趣的:(ssm学习旅程,java,maven,intellij-idea,ssm)