问答详情
源自:3-5 拦截器实现分页Ⅳ

Mybatis拦截器分页报错!!!

org.apache.ibatis.exceptions.PersistenceException: 
### Error opening session.  Cause: org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
### Cause: org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:100)
    at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSession(DefaultSqlSessionFactory.java:47)
    at com.imooc.db.DBAccess.getSqlSession(DBAccess.java:21)
    at com.imooc.dao.MessageDao.queryMessageListByPage(MessageDao.java:73)
    at com.imooc.service.QueryService.queryMessageListByPage(QueryService.java:50)
    at com.imooc.servlet.ListServlet.doGet(ListServlet.java:38)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.ibatis.plugin.PluginException: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
    at org.apache.ibatis.plugin.Plugin.getSignatureMap(Plugin.java:87)
    at org.apache.ibatis.plugin.Plugin.wrap(Plugin.java:44)
    at com.imooc.interceptor.PageInterceptor.plugin(PageInterceptor.java:63)
    at org.apache.ibatis.plugin.InterceptorChain.pluginAll(InterceptorChain.java:31)
    at org.apache.ibatis.session.Configuration.newExecutor(Configuration.java:553)
    at org.apache.ibatis.session.defaults.DefaultSqlSessionFactory.openSessionFromDataSource(DefaultSqlSessionFactory.java:96)
    ... 19 more
Caused by: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)
    at java.lang.Class.getMethod(Class.java:1605)
    at org.apache.ibatis.plugin.Plugin.getSignatureMap(Plugin.java:84)
    ... 24 more

582e8a700001e41105000386.jpg

582e8a700001020305000386.jpg

提问者:瓢_ 2016-11-18 12:58

个回答

  • 慕雪1586862
    2020-02-07 21:14:16

    感谢有用


  • Java_yk
    2019-11-14 17:52:15

    非常感谢

  • 阿龙_学霸君
    2018-05-30 10:51:06

    可以了,感谢呀。

  • 慕容7247808
    2017-11-10 10:19:55

    修改了以上两处,还是没有办法解决问题

  • 番茄盐煎肉
    2017-09-06 17:35:34

    灰常感谢

  • weibo_打开自己let_it_03576135
    2017-08-14 10:25:51

    感谢啊

  • 黑色柏油路
    2017-02-16 17:30:17

    感谢 有用 已解决!

  • 雷楼媒
    2016-11-24 14:16:32

    @Intercepts({@Signature(type=StatementHandler.class,method="prepare",args={Connection.class, Integer.class })})
    MetaObject metaObject = MetaObject.forObject(statementHandler, SystemMetaObject.DEFAULT_OBJECT_FACTORY, SystemMetaObject.DEFAULT_OBJECT_WRAPPER_FACTORY,new DefaultReflectorFactory());

    可能是因为你用的MyBatis版本比老师视频中的高,修改以上两个地方