zoukankan      html  css  js  c++  java
  • Mapped Statements collection does not contain value for 问题的解决

    在做SSM项目的时候,遇到MyBatis抛出的一个异常:

    Mapped Statements collection does not contain value for org.lyk.vo.mapping.NewsNS.findById.

    2017-09-01 21:03:48,979 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@108d02eb: startup date [Fri Sep 01 21:03:48 CST 2017]; root of context hierarchy
    2017-09-01 21:03:49,019 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from class path resource [applicationContext.xml]
    2017-09-01 21:03:49,352 INFO [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor] - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
    2017-09-01 21:03:49,433 INFO [com.mchange.v2.log.MLog] - MLog clients using log4j logging.
    2017-09-01 21:03:49,523 INFO [com.mchange.v2.c3p0.C3P0Registry] - Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
    2017-09-01 21:03:49,736 INFO [com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource] - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 4mdhs29qh2pjh31t4weot|429d486d, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 4mdhs29qh2pjh31t4weot|429d486d, idleConnectionTestPeriod -> 0, initialPoolSize -> 10, jdbcUrl -> jdbc:mysql://localhost:3306/mldn, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1000, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 20, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 5, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
    2017-09-01 21:03:49,968 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] - Mapped "{[/pages/member/insert],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.portlet.ModelAndView org.lyk.action.MemberAction.insert()
    2017-09-01 21:03:50,060 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter] - Looking for @ControllerAdvice: org.springframework.context.support.ClassPathXmlApplicationContext@108d02eb: startup date [Fri Sep 01 21:03:48 CST 2017]; root of context hierarchy
    2017-09-01 21:03:50,099 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter] - Looking for @ControllerAdvice: org.springframework.context.support.ClassPathXmlApplicationContext@108d02eb: startup date [Fri Sep 01 21:03:48 CST 2017]; root of context hierarchy
    2017-09-01 21:03:50,147 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] - Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'
    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
    ### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.lyk.vo.mapping.NewsNS.findById
    ### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.lyk.vo.mapping.NewsNS.findById
        at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
        at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:368)
        at com.sun.proxy.$Proxy12.selectOne(Unknown Source)
        at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:163)
        at org.lyk.dao.impl.NewsDAOImpl.findById(NewsDAOImpl.java:60)
        at org.lyk.dao.impl.NewsDAOImpl.findById(NewsDAOImpl.java:1)
        at org.lyk.service.impl.NewsServiceImpl.get(NewsServiceImpl.java:57)
        at org.lyk.main.Hello.main(Hello.java:37)
    Caused by: org.apache.ibatis.exceptions.PersistenceException: 
    ### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.lyk.vo.mapping.NewsNS.findById
    ### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.lyk.vo.mapping.NewsNS.findById
        at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:98)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:62)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
        ... 6 more
    Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.lyk.vo.mapping.NewsNS.findById
        at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:791)
        at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:631)
        at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:624)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:103)
        ... 13 more

    根本原因是mybatis.cfg.xml配置文件缺少了对Mapper.xml的引用。增加如下配置就可以解决该问题了。

    https://stackoverflow.com/questions/14219558/mybatis-illegalargumentexception-mapped-statements-collection-does-not-contain

    PS: 该问题也有可能是由于mapper文件里面没有定义该操作。

  • 相关阅读:
    80X86常用汇编指令集(不断补充完善中)
    重温大师经典:Martin Fowler 的持续集成
    .NET Framework 将有限地向开发者公开源代码
    DotNet源代码中的模式Builder生成器模式
    Delphi内嵌汇编语言BASM精要(转帖)
    sealed关键字用法
    VS2008设置查看.NET源码的方法
    基于LINQ to SQL的WEB开发三层架构(1)
    拓扑排序
    HDU1495 非常可乐(BFS)
  • 原文地址:https://www.cnblogs.com/kuillldan/p/7465104.html
Copyright © 2011-2022 走看看