为了账号安全,请及时绑定邮箱和手机立即绑定

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

正在回答

8 回答

感谢有用


0 回复 有任何疑惑可以回复我~

非常感谢

0 回复 有任何疑惑可以回复我~

可以了,感谢呀。

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

灰常感谢

0 回复 有任何疑惑可以回复我~

感谢啊

0 回复 有任何疑惑可以回复我~

感谢 有用 已解决!

1 回复 有任何疑惑可以回复我~
@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版本比老师视频中的高,修改以上两个地方

6 回复 有任何疑惑可以回复我~
#1

海与千巷

感谢,同样的问题,我在注解里加上Integer.class就好了
2016-12-12 回复 有任何疑惑可以回复我~
#2

阿双otw

MetaObject metaObject = SystemMetaObject.forObject(statementHandler);可以直接这样
2017-10-22 回复 有任何疑惑可以回复我~
#3

慕容7247808 回复 海与千巷

没有解决啊
2017-11-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Mybatis拦截器分页报错!!!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信