跳到主要内容

全局过滤器

全局过滤器用于为自动某些实体添加过滤条件,绝大部分针对这些实体类型的查询都会被自动添加相关where条件。

该功能有如下应用场景

  • 多视角数据,数据查询需要携带用户身份相关的查询条件,即使除用户身份以外的所有查询参数都相同,不同的用户也会看到不同的数据。

    多视角数据有一个典型的案例:多租户。本文档用多租户作为例子,讲解用户自定义全局过滤器。

  • 逻辑删除

    逻辑删除是Jimmer内置的全局过滤器,无需用户定义。

备注

对于有Hibernate背景知识的用户而言,全局过滤器和org.hibernate.annotations.Whereorg.hibernate.annotations.Filter以及org.hibernate.annotations.FilterDef类似。

不同点在于,Jimmer的全局过滤器具有灵活的注册方式,很容易被IOC框架 (比如Spring) 管理。

这样,全局过滤器可以直接从IOC框架中获取参数,比如用户身份信息,所以,开发人员无需在查询前为过滤器传参。