Module bus.pager

Class OperationHandler<T>

java.lang.Object
org.miaixz.bus.mapper.handler.AbstractSqlHandler
org.miaixz.bus.pager.handler.SqlParserHandler
org.miaixz.bus.pager.handler.OperationHandler<T>
Type Parameters:
T - 泛型参数
All Implemented Interfaces:
org.miaixz.bus.core.Handler<T>, org.miaixz.bus.mapper.handler.MapperHandler<T>

public class OperationHandler<T> extends SqlParserHandler implements org.miaixz.bus.mapper.handler.MapperHandler<T>
操作:防止全表更新与删除
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
    checkWhere(String tableName, net.sf.jsqlparser.expression.Expression where, String ex)
    检查 WHERE 条件是否有效,防止全表操作。
    void
    prepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler)
    准备 SQL 语句,检查 UPDATE 和 DELETE 语句是否包含 WHERE 条件,防止全表操作。
    protected void
    processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj)
    处理 DELETE 语句,检查是否包含 WHERE 条件。
    protected void
    processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object obj)
    处理 UPDATE 语句,检查是否包含 WHERE 条件。

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

    parse, parserMulti, parserSingle, parseStatements, processInsert, processParser, processSelect, 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, query, update
  • Constructor Details

    • OperationHandler

      public OperationHandler()
  • Method Details

    • prepare

      public void prepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler)
      准备 SQL 语句,检查 UPDATE 和 DELETE 语句是否包含 WHERE 条件,防止全表操作。
      Specified by:
      prepare in interface org.miaixz.bus.mapper.handler.MapperHandler<T>
      Parameters:
      statementHandler - MyBatis 语句处理器
    • processDelete

      protected void processDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj)
      处理 DELETE 语句,检查是否包含 WHERE 条件。
      Overrides:
      processDelete in class SqlParserHandler
      Parameters:
      delete - DELETE 语句对象
      index - 索引
      sql - 原始 SQL 语句
      obj - 附加对象
    • processUpdate

      protected void processUpdate(net.sf.jsqlparser.statement.update.Update update, int index, String sql, Object obj)
      处理 UPDATE 语句,检查是否包含 WHERE 条件。
      Overrides:
      processUpdate in class SqlParserHandler
      Parameters:
      update - UPDATE 语句对象
      index - 索引
      sql - 原始 SQL 语句
      obj - 附加对象
    • checkWhere

      protected void checkWhere(String tableName, net.sf.jsqlparser.expression.Expression where, String ex)
      检查 WHERE 条件是否有效,防止全表操作。
      Parameters:
      tableName - 表名
      where - WHERE 条件表达式
      ex - 异常信息
      Throws:
      IllegalArgumentException - 如果 WHERE 条件无效