好的,接下来我们将探讨所提到的两个主题,第一个是关于你的 Mybatis-plus 分页问题,第二个是关于如何使用多租户插件。

首先,我们来解析 Mybatis-plus 分页问题。当你使用 Mybatis-plus 进行分页查询时,发现获得的总数为0,这可能是由于你没有正确使用 Mybatis-plus 的分页插件所导致。

Mybatis-plus 的分页功能是通过巧妙地插入sql语句来实现的。分页插件 PaginationInterceptor 在你的某个类或者配置文件中应该被正确地配置和启动。你可能没有正确地引入这个插件,或者在应用中没有正确地使用它。

检查你的 Java 配置文件,你应该看到以下行:

@Configuration
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

这段代码确保了 PaginationInterceptor 插件被正确地启动。而当你执行分页查询时,你需要使用 Page 对象,像这样:

Page<User> page = new Page<>(1, 5);
userMapper.selectPage(page, null);

检查一下你的代码,确保你已经按照上述方式真正使用了分页查询。

再说说多租户插件的使用。在大型系统中,多个组织或团单位可能需要使用到相同的系统,这就需要实现多租户功能,使得各个租户之间的数据隔离,各自只能查看和操作自己的数据。

在 Mybatis-plus 中,多租户的实现通常是通过插入一个租户过滤器组件,给所有的 SQL 语句自动添加额外的租户标识字段。

你需要自定义一个多租户插件,在其中设定你的租户标识字段,比如叫 tenant_id. 以下是一个例子:

@Component
public class MyTenantHandler implements TenantLineHandler {
  
    @Override
    public Expression getTenantId(boolean where) {
        // 返回租户ID
        return new LongValue(1);
        // 这个例子中租户ID为1,你可以设置这个值从哪里获得,比如存储在Session或Json Web Token里。
    }
  
    @Override
    public String getTenantIdColumn() {
        // 这是你需要用来做租户id的字段名。
        return "tenant_id";
    }
  
    @Override
    public boolean ignoreTable(String tableName) {
        // 如果有些表不需要进行租户信息过滤,可以在此处返回为 true,例如: return "user".equals(tableName);
        return false;
    }
}

以上是基础的多租户配置,在你的业务复杂度增加时,可能需要进行更复杂的处理逻辑。

总的来说,使用 Mybatis-plus 确实可以极大地方便我们的开发,但也需要我们理解其工作原理,掌握如何合适地使用各种插件。分页插件和多租户插件是其中典型,它们的运用可以让我们的代码更为简洁、高效,理解和掌握好它们的用法对我们的开发过程有着极其重要的意义。

云服务器推荐

蓝易云国内/海外高防云服务器推荐


海外免备案云服务器链接:www.tsyvps.com

持有增值电信营业许可证:B1-20222080【资质齐全】

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。


百度搜索:蓝易云

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2023 年 11 月 12 日
如果觉得我的文章对你有用,请随意赞赏