java.lang.Object
org.miaixz.bus.mapper.handler.AbstractSqlHandler
org.miaixz.bus.pager.handler.SqlParserHandler
org.miaixz.bus.pager.handler.ConditionHandler
org.miaixz.bus.pager.handler.TenantHandler
- 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 -
Method Summary
Modifier and TypeMethodDescriptionprotected voidappendSelectItem(List<net.sf.jsqlparser.statement.select.SelectItem<?>> selectItems) 追加租户列到 SELECT 语句的 SELECT 子句。net.sf.jsqlparser.expression.ExpressionbuildTableExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String segment) 构建租户条件表达式(如 tenant_id = ?)。protected net.sf.jsqlparser.schema.ColumngetAliasColumn(net.sf.jsqlparser.schema.Table table) 获取租户列名,带表别名(若存在)。获取租户服务。voidprepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler) 预处理 INSERT、UPDATE、DELETE 语句,添加租户条件。protected voidprocessDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object object) 处理 DELETE 语句,添加租户条件到 WHERE 子句。protected voidprocessInsert(net.sf.jsqlparser.statement.insert.Insert insert, int index, String sql, Object object) 处理 INSERT 语句,添加租户列和值。protected voidprocessInsertSelect(net.sf.jsqlparser.statement.select.Select select, String segment) 处理 INSERT INTO ...protected voidprocessSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object object) 处理 SELECT 语句,添加租户条件到 WHERE 子句。protected voidprocessUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object object) 处理 UPDATE 语句,添加租户条件到 WHERE 子句。voidquery(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 语句中添加租户条件。booleansetProperties(Properties properties) 设置处理器属性,初始化租户服务。voidsetProvider(TenantProvider provider) 设置租户服务。Methods inherited from class org.miaixz.bus.pager.handler.ConditionHandler
andExpression, appendExpression, builderExpression, processFunction, processOtherFromItem, processPlainSelect, processSelectBody, processSelectItem, processWhereSubSelectMethods inherited from class org.miaixz.bus.pager.handler.SqlParserHandler
parse, parserMulti, parserSingle, parseStatements, processParser, validateSqlMethods inherited from class org.miaixz.bus.mapper.handler.AbstractSqlHandler
getMappedStatement, getMappedStatement, getMetaObject, getSqlParserInfo, mapperBoundSql, mapperStatementHandler, realTarget, setAdditionalParameterMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.miaixz.bus.core.Handler
after, beforeMethods 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:
queryin interfaceorg.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:
preparein interfaceorg.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:
processSelectin classSqlParserHandler- Parameters:
select- SELECT 语句index- 语句索引(未使用)sql- 原始 SQLobject- WHERE 片段(字符串形式)
-
processInsert
protected void processInsert(net.sf.jsqlparser.statement.insert.Insert insert, int index, String sql, Object object) 处理 INSERT 语句,添加租户列和值。- Overrides:
processInsertin classSqlParserHandler- Parameters:
insert- INSERT 语句index- 语句索引(未使用)sql- 原始 SQLobject- WHERE 片段(未使用)
-
processUpdate
protected void processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object object) 处理 UPDATE 语句,添加租户条件到 WHERE 子句。- Overrides:
processUpdatein classSqlParserHandler- Parameters:
update- UPDATE 语句index- 语句索引(未使用)sql- 原始 SQLobject- WHERE 片段(字符串形式)
-
processDelete
protected void processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object object) 处理 DELETE 语句,添加租户条件到 WHERE 子句。- Overrides:
processDeletein classSqlParserHandler- Parameters:
delete- DELETE 语句index- 语句索引(未使用)sql- 原始 SQLobject- WHERE 片段(字符串形式)
-
processInsertSelect
protected void processInsertSelect(net.sf.jsqlparser.statement.select.Select select, String segment) 处理 INSERT INTO ... SELECT 语句,确保 SELECT 子查询包含租户条件。- Parameters:
select- SELECT 语句体segment- WHERE 片段(字符串形式)
-
appendSelectItem
追加租户列到 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
设置处理器属性,初始化租户服务。- Specified by:
setPropertiesin interfaceorg.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:
buildTableExpressionin classConditionHandler- Parameters:
table- 表对象where- 当前 WHERE 条件segment- Mapper 全路径(未使用)- Returns:
- 租户条件表达式
-
getProvider
获取租户服务。- Returns:
- 租户服务
-
setProvider
设置租户服务。- Parameters:
provider- 租户服务
-