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 -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckWhere(String tableName, net.sf.jsqlparser.expression.Expression where, String ex) 检查 WHERE 条件是否有效,防止全表操作。voidprepare(org.apache.ibatis.executor.statement.StatementHandler statementHandler) 准备 SQL 语句,检查 UPDATE 和 DELETE 语句是否包含 WHERE 条件,防止全表操作。protected voidprocessDelete(net.sf.jsqlparser.statement.delete.Delete delete, int index, String sql, Object obj) 处理 DELETE 语句,检查是否包含 WHERE 条件。protected voidprocessUpdate(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, 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, 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:
preparein interfaceorg.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:
processDeletein classSqlParserHandler- 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:
processUpdatein classSqlParserHandler- 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 条件无效
-