当前位置:   article > 正文

mybatis-plus分页total为0,分页失效,mybatis-plus多租户插件使用_ssm框架mybatisplus page total是0

ssm框架mybatisplus page total是0

背景:项目使用mybatis分页插件不生效,以及多租户使用时读取配置异常

分页插件不细述,网上很多方法试了还是不生效,最后修改到当前版本解决,直接上代码

多租户插件使用遇到的问题:

最开始在MyTenantLineHandler中使用 @Value("${tables}"),服务启动时能从配置中心拉取到配置,但在运行时获取到的值为空,试了很多方法都不生效,后面将配置中心的配置在调用MyTenantLineHandler的那一层向下传递配置值,问题解决

租户配置

  1. @Component
  2. @RefreshScope
  3. @ConfigurationProperties(prefix = "saas.tenant")
  4. public class ConfigProperties {
  5. public void setColumn(String column) {
  6. this.column = column;
  7. }
  8. public void setTables(List<String> tables) {
  9. this.tables = tables;
  10. }
  11. public String getColumn(){
  12. return this.column;
  13. }
  14. public List<String> getTables(){
  15. return this.tables;
  16. }
  17. private String column="";
  18. private List<String> tables= Lists.newArrayList();
  19. }
TenantLineHandler
  1. public class MyTenantLineHandler implements TenantLineHandler {
  2. private final ConfigProperties configProperties;
  3. public MyTenantLineHandler(ConfigProperties configProperties) {
  4. this.configProperties = configProperties;
  5. }
  6. @Override
  7. public LongValue getTenantId() {
  8. Long tenantId = TenantContextHolder.getTenantId();
  9. return tenantId == null ? new LongValue(-1) : new LongValue(tenantId);
  10. }
  11. @Override
  12. public String getTenantIdColumn() {
  13. return configProperties.getColumn();
  14. }
  15. @Override
  16. public boolean ignoreTable(String tableName) {
  17. return !configProperties.getTables().contains(tableName);
  18. // return TenantLineHandler.super.ignoreTable(tableName);
  19. }
  20. }
MybatisPlusConfig
注意:TenantLineInnerInterceptor要添加PaginationInnerInterceptor之前,如果放错了,会出现分页count(*)查询时不会自动加上tenant_id
  1. @Configuration
  2. @AutoConfigureAfter(PageHelperAutoConfiguration.class)
  3. //@EnableTransactionManagement
  4. public class MybatisPlusConfig {
  5. @Autowired
  6. private List<SqlSessionFactory> sqlSessionFactoryList;
  7. @Autowired
  8. private ConfigProperties configProperties;
  9. @PostConstruct
  10. public void addMyInterceptor() {
  11. MybatisPlusInterceptor interceptor = mybatisPlusInterceptor();
  12. for (SqlSessionFactory factory : sqlSessionFactoryList) {
  13. factory.getConfiguration().addInterceptor(interceptor);
  14. }
  15. }
  16. /**
  17. * mybatisplus 分页拦截器
  18. * @return
  19. */
  20. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  21. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  22. TenantLineInnerInterceptor tenantLineInnerInterceptor=new TenantLineInnerInterceptor();
  23. tenantLineInnerInterceptor.setTenantLineHandler(new MyTenantLineHandler(configProperties));
  24. interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
  25. interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
  26. return interceptor;
  27. }
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/993848
推荐阅读
相关标签
  

闽ICP备14008679号