Mapped Statements collection does not contain value for解决方案

Mapped Statements collection does not contain value for解决方案


 
 
  1. org.apache.ibatis.exceptions. PersistenceException:
  2. ### Error querying database. Cause: java.lang. IllegalArgumentException: Mapped Statements collection does not contain value for x.y.z.findUserById
  3. ### Cause: java.lang. IllegalArgumentException: Mapped Statements collection does not contain value for x.y.z.findUserById
  4. at org.apache.ibatis.exceptions. ExceptionFactory.wrapException( ExceptionFactory.java: 30)
  5. at org.apache.ibatis.session.defaults. DefaultSqlSession.selectList( DefaultSqlSession.java: 150)
  6. at org.apache.ibatis.session.defaults. DefaultSqlSession.selectList( DefaultSqlSession.java: 141)
  7. at org.apache.ibatis.session.defaults. DefaultSqlSession.selectOne( DefaultSqlSession.java: 77)
  8. at dao.userDaoImpl.findUserById(userDaoImpl.java: 19)
  9. at test. TestUserClass.testFindUserById( TestUserClass.java: 11)
  10. at sun. reflect. NativeMethodAccessorImpl.invoke0( Native Method)
  11. at sun. reflect. NativeMethodAccessorImpl.invoke( Unknown Source)
  12. at sun. reflect. DelegatingMethodAccessorImpl.invoke( Unknown Source)
  13. at java.lang. reflect. Method.invoke( Unknown Source)
  14. at org.junit.runners.model. FrameworkMethod$ 1.runReflectiveCall( FrameworkMethod.java: 50)
  15. at org.junit. internal.runners.model. ReflectiveCallable.run( ReflectiveCallable.java: 12)
  16. at org.junit.runners.model. FrameworkMethod.invokeExplosively( FrameworkMethod.java: 47)
  17. at org.junit. internal.runners.statements. InvokeMethod.evaluate( InvokeMethod.java: 17)
  18. at org.junit.runners. ParentRunner.runLeaf( ParentRunner.java: 325)
  19. at org.junit.runners. BlockJUnit4ClassRunner.runChild( BlockJUnit4ClassRunner.java: 78)
  20. at org.junit.runners. BlockJUnit4ClassRunner.runChild( BlockJUnit4ClassRunner.java: 57)
  21. at org.junit.runners. ParentRunner$ 3.run( ParentRunner.java: 290)
  22. at org.junit.runners. ParentRunner$ 1.schedule( ParentRunner.java: 71)
  23. at org.junit.runners. ParentRunner.runChildren( ParentRunner.java: 288)
  24. at org.junit.runners. ParentRunner.access$ 000( ParentRunner.java: 58)
  25. at org.junit.runners. ParentRunner$ 2.evaluate( ParentRunner.java: 268)
  26. at org.junit.runners. ParentRunner.run( ParentRunner.java: 363)
  27. at org.eclipse.jdt. internal.junit4.runner. JUnit4TestReference.run( JUnit4TestReference.java: 86)
  28. at org.eclipse.jdt. internal.junit.runner. TestExecution.run( TestExecution.java: 38)
  29. at org.eclipse.jdt. internal.junit.runner. RemoteTestRunner.runTests( RemoteTestRunner.java: 459)
  30. at org.eclipse.jdt. internal.junit.runner. RemoteTestRunner.runTests( RemoteTestRunner.java: 675)
  31. at org.eclipse.jdt. internal.junit.runner. RemoteTestRunner.run( RemoteTestRunner.java: 382)
  32. at org.eclipse.jdt. internal.junit.runner. RemoteTestRunner.main( RemoteTestRunner.java: 192)
  33. Caused by: java.lang. IllegalArgumentException: Mapped Statements collection does not contain value for x.y.z.findUserById
  34. at org.apache.ibatis.session. Configuration$ StrictMap. get( Configuration.java: 888)
  35. at org.apache.ibatis.session. Configuration.getMappedStatement( Configuration.java: 721)
  36. at org.apache.ibatis.session. Configuration.getMappedStatement( Configuration.java: 714)
  37. at org.apache.ibatis.session.defaults. DefaultSqlSession.selectList( DefaultSqlSession.java: 147)
  38. ... 27 more

网上的解决方案主要有几种,我仔细发现,自己好像mapper里的xml文件没有写好:

before:

<mapper namespace="x.y.z.">
 
 

after:

<mapper namespace="x.y.z">
 
 

因为在编译的时候namespace给我们自动添加一个点(.),验证一下:

<mapper namespace="x.y.z.">

 
 
user=(User)session.selectOne("x.y.z..findUserById",id);
 
 

结果完全正确,此坑验证成功

如果不添加:

user=(User)session.selectOne("x.y.z.findUserById",id);
 
 

结果就是显示最开始的错误

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值