mybatisplus拦截器获取不到查询参数

avatar
作者
猴君
阅读量:0

       想在mybatisplus拦截器Executor 阶段做缓存处理,因为parameterHandler阶段是已经到sql语句准备执行并且填充参数了,而且ResultSetHandler阶段已经到sql语句执行完毕返回结果集了,statementHandler阶段是准备执行sql阶段,因此最恰当的缓存处理阶段是在executor阶段进行缓存处理,但是executor阶段会发现获取不到查询参数。

因为如下:

    QueryWrapper 是 MyBatis Plus 提供的用于构建动态 SQL 的辅助类。它会在执行查询前组装 SQL 语句和相应的参数。有些情况下,参数信息可能直到调用某些方法(如 getCustomSqlSegment())后才会被填充到 paramNameValuePairs 中。因此要想paramNameValuePairs 不为空,必须显示调用一次getCustomSqlSegment方法,初始化填充参数。

Map<?, ?> arg = ( Map<?, ?>) invocation.getArgs()[1];                 String address =null;                 String name =null;                 System.out.println(arg);                 Map<String, Object> paramNameValuePairs=null;                 for (Object entry : arg.values()) {                         QueryWrapper<?> queryWrapper_emp = (QueryWrapper<?>) entry;                         //System.out.println(queryWrapper_emp.getCustomSqlSegment());                         paramNameValuePairs = queryWrapper_emp.getParamNameValuePairs();                         System.out.println("paramNameValuePairs="+paramNameValuePairs);                         break;                 }

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!