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.PermissionsHandler
- All Implemented Interfaces:
org.miaixz.bus.core.Handler,org.miaixz.bus.mapper.handler.MapperHandler
public class PermissionsHandler
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 TypeMethodDescriptionnet.sf.jsqlparser.expression.ExpressionbuildTableExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String whereSegment) 构建表级权限表达式获取数据权限提供者protected net.sf.jsqlparser.expression.ExpressiongetUpdateOrDeleteExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String whereSegment) 获取UPDATE或DELETE语句的权限表达式voidprepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler) 预处理SQL语句,针对UPDATE和DELETE语句动态添加权限条件protected voidprocessDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj) 处理DELETE语句,添加权限条件protected voidprocessSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object obj) 处理SELECT语句,添加权限条件protected voidprocessUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object obj) 处理UPDATE语句,添加权限条件voidquery(Object result, 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语句动态添加权限条件voidsetProvider(PermissionsProvider 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, processInsert, 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, before, setPropertiesMethods inherited from interface org.miaixz.bus.mapper.handler.MapperHandler
getBoundSql, isQuery, isUpdate, update
-
Constructor Details
-
PermissionsHandler
public PermissionsHandler()
-
-
Method Details
-
prepare
public void prepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler) 预处理SQL语句,针对UPDATE和DELETE语句动态添加权限条件- Specified by:
preparein interfaceorg.miaixz.bus.mapper.handler.MapperHandler- Parameters:
statementHandler- MyBatis的语句处理器
-
query
public void query(Object result, 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:
result- 查询结果executor- MyBatis执行器mappedStatement- 映射语句parameter- 查询参数rowBounds- 分页参数resultHandler- 结果处理器boundSql- 绑定SQL
-
processUpdate
protected void processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object obj) 处理UPDATE语句,添加权限条件- Overrides:
processUpdatein classSqlParserHandler- Parameters:
update- UPDATE语句对象index- SQL索引sql- 原始SQLobj- 附加参数(通常为映射ID)
-
processDelete
protected void processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj) 处理DELETE语句,添加权限条件- Overrides:
processDeletein classSqlParserHandler- Parameters:
delete- DELETE语句对象index- SQL索引sql- 原始SQLobj- 附加参数(通常为映射ID)
-
processSelect
protected void processSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object obj) 处理SELECT语句,添加权限条件- Overrides:
processSelectin classSqlParserHandler- Parameters:
select- SELECT语句对象index- SQL索引sql- 原始SQLobj- 附加参数(通常为映射ID)
-
buildTableExpression
public net.sf.jsqlparser.expression.Expression buildTableExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String whereSegment) 构建表级权限表达式- Specified by:
buildTableExpressionin classConditionHandler- Parameters:
table- 表对象where- 原始WHERE条件whereSegment- 权限条件片段- Returns:
- 组合后的权限表达式
-
getProvider
获取数据权限提供者- Returns:
- 数据权限提供者
-
setProvider
设置数据权限提供者- Parameters:
provider- 数据权限提供者
-
getUpdateOrDeleteExpression
protected net.sf.jsqlparser.expression.Expression getUpdateOrDeleteExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String whereSegment) 获取UPDATE或DELETE语句的权限表达式- Parameters:
table- 表对象where- 原始WHERE条件whereSegment- 权限条件片段- Returns:
- 组合后的权限表达式
-