已经解决了,要反编译之后再导进去才能看到
可以看看深入浅出MyBatis技术原理与实战
我上面给出的代码中
Page page = (Page)parameter.get("page");// 22行
这个page对象作用范围只是在 intercept(){}方法内,而intercept方法只是 拦截器类的一个方法(该拦截器类继承了Interceptor)并不是action 所在的类,我是想把mybatis的Mapper接口中dao操作方法返回查询结果集记录条数和查询结果集。
核心问题就是:实现Interceptor接口时,自定义步骤中产生的变量如何传出到action方法内(该变量不是查询结果集)
HashMap<Integer,Message> map =new HashMap<Integer,Message>(); map= (HashMap<Integer, Message>) messageMapper.queryMessageRange(5,5,"asd"); // 我的理解 这里的map就是返回的查询结果集。messageMapper是一个DAO实现类,内部有封装的查询方法,例如queryMessageRange()
用单元测试
MetaObject metaObject = MetaObject.forObject(statementHandler, SystemMetaObject.DEFAULT_OBJECT_FACTORY, SystemMetaObject.DEFAULT_OBJECT_WRAPPER_FACTORY, new DefaultReflectorFactory());
mybatis每次执行查询时都会执行拦截器,应该是你打错地方了,参考上图