Module bus.pager

Class TenantHandler

java.lang.Object
org.miaixz.bus.mapper.handler.AbstractSqlHandler
All Implemented Interfaces:
org.miaixz.bus.core.Handler, org.miaixz.bus.mapper.handler.MapperHandler

public class TenantHandler extends ConditionHandler implements org.miaixz.bus.mapper.handler.MapperHandler
多租户处理器,负责在 SQL 中添加租户条件。
Since:
Java 17+
Author:
Kimi Liu
  • Field Summary

    Fields inherited from class org.miaixz.bus.mapper.handler.AbstractSqlHandler

    DEFAULT_REFLECTOR_FACTORY, DELEGATE_BOUNDSQL, DELEGATE_BOUNDSQL_SQL, DELEGATE_MAPPEDSTATEMENT, MAPPEDSTATEMENT
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    appendSelectItem(List<net.sf.jsqlparser.statement.select.SelectItem<?>> selectItems)
    追加租户列到 SELECT 语句的 SELECT 子句。
    net.sf.jsqlparser.expression.Expression
    buildTableExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String segment)
    构建租户条件表达式(如 tenant_id = ?)。
    protected net.sf.jsqlparser.schema.Column
    getAliasColumn(net.sf.jsqlparser.schema.Table table)
    获取租户列名,带表别名(若存在)。
    获取租户服务。
    void
    prepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler)
    预处理 INSERT、UPDATE、DELETE 语句,添加租户条件。
    protected void
    processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object object)
    处理 DELETE 语句,添加租户条件到 WHERE 子句。
    protected void
    processInsert(net.sf.jsqlparser.statement.insert.Insert insert, int index, String sql, Object object)
    处理 INSERT 语句,添加租户列和值。
    protected void
    processInsertSelect(net.sf.jsqlparser.statement.select.Select select, String segment)
    处理 INSERT INTO ...
    protected void
    processSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object object)
    处理 SELECT 语句,添加租户条件到 WHERE 子句。
    protected void
    processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object object)
    处理 UPDATE 语句,添加租户条件到 WHERE 子句。
    void
    query(Object object, org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement mappedStatement, Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql)
    处理查询操作,在 SELECT 语句中添加租户条件。
    boolean
    设置处理器属性,初始化租户服务。
    void
    设置租户服务。

    Methods inherited from class org.miaixz.bus.pager.handler.SqlParserHandler

    parse, parserMulti, parserSingle, parseStatements, processParser, validateSql

    Methods inherited from class org.miaixz.bus.mapper.handler.AbstractSqlHandler

    getMappedStatement, getMappedStatement, getMetaObject, getSqlParserInfo, mapperBoundSql, mapperStatementHandler, realTarget, setAdditionalParameter

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.miaixz.bus.core.Handler

    after, before

    Methods inherited from interface org.miaixz.bus.mapper.handler.MapperHandler

    getBoundSql, isQuery, isUpdate, update
  • Constructor Details

    • TenantHandler

      public TenantHandler()
  • Method Details

    • query

      public void query(Object object, org.apache.ibatis.executor.Executor executor, org.apache.ibatis.mapping.MappedStatement mappedStatement, Object parameter, org.apache.ibatis.session.RowBounds rowBounds, org.apache.ibatis.session.ResultHandler resultHandler, org.apache.ibatis.mapping.BoundSql boundSql)
      处理查询操作,在 SELECT 语句中添加租户条件。
      Specified by:
      query in interface org.miaixz.bus.mapper.handler.MapperHandler
      Parameters:
      object - 结果对象(未使用)
      executor - MyBatis 执行器
      mappedStatement - 映射语句
      parameter - 查询参数
      rowBounds - 分页参数
      resultHandler - 结果处理器
      boundSql - 绑定 SQL
    • prepare

      public void prepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler)
      预处理 INSERT、UPDATE、DELETE 语句,添加租户条件。
      Specified by:
      prepare in interface org.miaixz.bus.mapper.handler.MapperHandler
      Parameters:
      statementHandler - 语句处理器
    • processSelect

      protected void processSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object object)
      处理 SELECT 语句,添加租户条件到 WHERE 子句。
      Overrides:
      processSelect in class SqlParserHandler
      Parameters:
      select - SELECT 语句
      index - 语句索引(未使用)
      sql - 原始 SQL
      object - WHERE 片段(字符串形式)
    • processInsert

      protected void processInsert(net.sf.jsqlparser.statement.insert.Insert insert, int index, String sql, Object object)
      处理 INSERT 语句,添加租户列和值。
      Overrides:
      processInsert in class SqlParserHandler
      Parameters:
      insert - INSERT 语句
      index - 语句索引(未使用)
      sql - 原始 SQL
      object - WHERE 片段(未使用)
    • processUpdate

      protected void processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object object)
      处理 UPDATE 语句,添加租户条件到 WHERE 子句。
      Overrides:
      processUpdate in class SqlParserHandler
      Parameters:
      update - UPDATE 语句
      index - 语句索引(未使用)
      sql - 原始 SQL
      object - WHERE 片段(字符串形式)
    • processDelete

      protected void processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object object)
      处理 DELETE 语句,添加租户条件到 WHERE 子句。
      Overrides:
      processDelete in class SqlParserHandler
      Parameters:
      delete - DELETE 语句
      index - 语句索引(未使用)
      sql - 原始 SQL
      object - WHERE 片段(字符串形式)
    • processInsertSelect

      protected void processInsertSelect(net.sf.jsqlparser.statement.select.Select select, String segment)
      处理 INSERT INTO ... SELECT 语句,确保 SELECT 子查询包含租户条件。
      Parameters:
      select - SELECT 语句体
      segment - WHERE 片段(字符串形式)
    • appendSelectItem

      protected void appendSelectItem(List<net.sf.jsqlparser.statement.select.SelectItem<?>> selectItems)
      追加租户列到 SELECT 语句的 SELECT 子句。
      Parameters:
      selectItems - SELECT 子句的列列表
    • getAliasColumn

      protected net.sf.jsqlparser.schema.Column getAliasColumn(net.sf.jsqlparser.schema.Table table)
      获取租户列名,带表别名(若存在)。
      Parameters:
      table - 表对象
      Returns:
      租户列名(如 tenantId 或 tableAlias.tenantId)
    • setProperties

      public boolean setProperties(Properties properties)
      设置处理器属性,初始化租户服务。
      Specified by:
      setProperties in interface org.miaixz.bus.core.Handler
      Parameters:
      properties - 配置属性
      Returns:
      是否设置成功
    • buildTableExpression

      public net.sf.jsqlparser.expression.Expression buildTableExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String segment)
      构建租户条件表达式(如 tenant_id = ?)。
      Specified by:
      buildTableExpression in class ConditionHandler
      Parameters:
      table - 表对象
      where - 当前 WHERE 条件
      segment - Mapper 全路径(未使用)
      Returns:
      租户条件表达式
    • getProvider

      public TenantProvider getProvider()
      获取租户服务。
      Returns:
      租户服务
    • setProvider

      public void setProvider(TenantProvider provider)
      设置租户服务。
      Parameters:
      provider - 租户服务