• 总结在ssm整合中,Mybatis出现Mapped Statements collection already contains value for xxxxx的解决方案


    先贴一段报错信息:
      前面的都不是很重要,看最后灰色标注的那段。。。。
    严重: 异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.context.ContextLoaderListener]
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionfactory' defined in class path resource [applicationContext-dao.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:apache-tomcat-8.5.46webappsssm_blogWEB-INFclassesorglogdaoFriendMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for org.blog.dao.FriendMapper.searchFriend
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:743)
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4699)
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412)
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402)
     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
     at java.lang.Thread.run(Thread.java:745)
    Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:apache-tomcat-8.5.46webappsssm_blogWEB-INFclassesorglogdaoFriendMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for org.blog.dao.FriendMapper.searchFriend
     at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:466)
     at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
     ... 21 more
    Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for org.blog.dao.FriendMapper.searchFriend
     at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)
     at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)
     at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:464)
     ... 24 more
    Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for org.blog.dao.FriendMapper.searchFriend
     at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:782)
     at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:754)
     at org.apache.ibatis.session.Configuration.addMappedStatement(Configuration.java:578)
     at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:288)
     at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:107)
     at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:135)
     at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:128)
     at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)
     ... 26 more

    当出现Mapped Statements collection already contains value for。。。。。(意思大概:xxx 在statements 执行语句的集合中已经存在了。。。(塑料英语,大佬轻拍))

    这种报错时

    错误原因有:
    1.mapper中存在id重复的值
    2.mapper中的parameterType或resultType为空。
    例如:<select id="findProductById" parameterType=" "> </select>
     
    3. 在使用@Select等注解的情况下,方法名即为mapper的id,重载的方法会报这个错。
    4. mapper复制  忘了改namespace指向的类,所以两个mapper指向同一个mapper,所以报了这个错。
    5.sqlMapperConfig.xml与application-dao.xml(文件名不一定相同,我在这个文件中主要配置的是,sqlSessionFactory放入IOC容器和扫描mapper包下的文件,并将mapper接口的实现类放入容器)中
    例如:
     <mappers>
        <package name="org.blog.dao"/>
     </mappers>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage" value="org.blog.dao"></property>
     </bean>
    重复了,删掉一个就可以了。。。。
  • 相关阅读:
    [BZOJ] 1611: [Usaco2008 Feb]Meteor Shower流星雨
    [BZOJ] 1626: [Usaco2007 Dec]Building Roads 修建道路
    [BZOJ] 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛
    [BZOJ] 1627: [Usaco2007 Dec]穿越泥地
    [BZOJ] 1614: [Usaco2007 Jan]Telephone Lines架设电话线
    [BZOJ] 1617: [Usaco2008 Mar]River Crossing渡河问题
    [BZOJ] 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛
    [BZOJ] 1625: [Usaco2007 Dec]宝石手镯
    [BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草
    [HDU] 迷宫城堡 HDU
  • 原文地址:https://www.cnblogs.com/Not-Leave-Regrets/p/11748868.html
Copyright © 2020-2023  润新知