Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自定义拦截器InnerInterceptor无法作用于自定义_COUNT count语句 #833

Open
deepduckfts opened this issue Aug 29, 2024 · 2 comments

Comments

@deepduckfts
Copy link

  • [ √] 我已在 issues 搜索类似问题,并且不存在相同的问题.

问题描述

当不使用_COUNT去重写count语句时,原查询语句会经过拦截器然后修改成新sql,之后自动生成的count语句也会基于新sql生成,这没问题是我想要的结果。
当使用自定义_COUNT去重写count语句时,原查询语句会经过拦截器然后修改成新sql,但是自定义_COUNT语句却没有变化,这导致了查询结果与查询条数不一致。我尝试在原查询语句进入拦截器的同时去处理_COUNT的BoundSql,但是进入PageInterceptor后识别到有自定义_COUNT方法时是重新获取_COUNT方法的原sql并不是我修改后的sql。我期望的是自定义_COUNT语句也可以进入自定义拦截器或者在PageInterceptor中获取到我修改后的_COUNT sql

使用环境

  • PageHelper 版本: 5.3
  • 数据库类型和版本: postgresql 42.3.8
  • SpringBoot 2.4
@abel533
Copy link
Collaborator

abel533 commented Aug 29, 2024

能否在当前项目加个单元测试复现问题?

@deepduckfts
Copy link
Author

单元测试
image

mapper中的查询方法,被@SalesOwnerCondition标注的是需要经过拦截器处理的方法(实际_COUNT方法未进入拦截器)
image

拦截器部分代码,主要是经过业务处理后得到newSql然后通过反射设置回BoundSql中(查询数据sql进入到此处并成功修改了sql)
image

mybatisplus执行的sql log
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants