Como o simplest-jpa v1.2.0 implementa elegantemente a multilocação

começar a usar

simplestdocumentação detalhada

simplest-jpaO uso de multilocação requer 2 etapas:

  1. Configure a tabela e as colunas de inquilinos correspondentes nas propriedades.
  2. Configurar TenantFactory para injetar a fonte de dados do locatário

TenantFactory é usado para produzir o ID do inquilino ou para obter o ID do inquilino atual.

configuração

arquivo de propriedades

jpa:
  properties:
    hibernate:
      session_factory:
        statement_inspector: cn.soboys.simplestjpa.interceptor.TenantInterceptor #配置指定租户拦截器
# 需进行租户解析的租户表
tenant:
  tables:
    - cms_category
  tenant-id-column: tenant_id
  enableTenant: true

Dados de locatário personalizados

/**
 * @author 公众号 程序员三时
 * @version 1.0
 * @date 2023/7/30 22:15
 * @webSite https://github.com/coder-amiao
 */
@Configuration
public class TenantConfig implements TenantFactory {
    
    

    @Override
    public String getTenantId() {
    
    
        return "8";
    }
}

::: a dica será filtrada automaticamente
se getTenantId()retornar vazia null.
:::

Ignorar as condições do inquilino

Em alguns cenários, podemos precisar ignorar as condições do inquilino em operações como adição, exclusão, modificação e consulta. Neste momento, podemos definirCustomTenant
withoutTenantCondition

@Test
void countByExample() {
    
    
    CustomTenant.withoutTenantCondition=true; //自定义不设置租户拦截
    Category category = new Category();
    category.setTitle("测试");
    long count = categoryService.count(Example.of(category));
    log.info("条件count{}", count);
}

mostrar

Exclua, modifique e consulte tabelas na tabela de configuração de atributo especificada. Trará as condições do inquilino.

Por exemplo, para excluir com base no ID, o SQL executado é o seguinte:

DELETE FROM tb_article where id = ? and tenant_id = ?

おすすめ

転載: blog.csdn.net/u011738045/article/details/132109668