Module bus.pager

Class PermissionsHandler

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 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
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    net.sf.jsqlparser.expression.Expression
    buildTableExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String whereSegment)
    构建表级权限表达式
    获取数据权限提供者
    protected net.sf.jsqlparser.expression.Expression
    getUpdateOrDeleteExpression(net.sf.jsqlparser.schema.Table table, net.sf.jsqlparser.expression.Expression where, String whereSegment)
    获取UPDATE或DELETE语句的权限表达式
    void
    prepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler)
    预处理SQL语句,针对UPDATE和DELETE语句动态添加权限条件
    protected void
    processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj)
    处理DELETE语句,添加权限条件
    protected void
    processSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object obj)
    处理SELECT语句,添加权限条件
    protected void
    processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object obj)
    处理UPDATE语句,添加权限条件
    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语句动态添加权限条件
    void
    设置数据权限提供者

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

    parse, parserMulti, parserSingle, parseStatements, processInsert, 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, setProperties

    Methods 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:
      prepare in interface org.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:
      query in interface org.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:
      processUpdate in class SqlParserHandler
      Parameters:
      update - UPDATE语句对象
      index - SQL索引
      sql - 原始SQL
      obj - 附加参数(通常为映射ID)
    • processDelete

      protected void processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj)
      处理DELETE语句,添加权限条件
      Overrides:
      processDelete in class SqlParserHandler
      Parameters:
      delete - DELETE语句对象
      index - SQL索引
      sql - 原始SQL
      obj - 附加参数(通常为映射ID)
    • processSelect

      protected void processSelect(net.sf.jsqlparser.statement.select.Select select, int index, String sql, Object obj)
      处理SELECT语句,添加权限条件
      Overrides:
      processSelect in class SqlParserHandler
      Parameters:
      select - SELECT语句对象
      index - SQL索引
      sql - 原始SQL
      obj - 附加参数(通常为映射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:
      buildTableExpression in class ConditionHandler
      Parameters:
      table - 表对象
      where - 原始WHERE条件
      whereSegment - 权限条件片段
      Returns:
      组合后的权限表达式
    • getProvider

      public PermissionsProvider getProvider()
      获取数据权限提供者
      Returns:
      数据权限提供者
    • setProvider

      public void setProvider(PermissionsProvider provider)
      设置数据权限提供者
      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:
      组合后的权限表达式