高危误操作
delete from student
update student set name=“han”
实现逻辑
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)
实现步骤
1、写拦截器类
继承 Interceptor,实现三个抽象方法
-
void setProperties (Properties var1)
//获取参数
-
Object plugin (Object var1)
//plugin: 将原核心对象和增强功能(定义的拦截功能)合并 得到新的核心对象
-
Object intercept (Invocation var1)
//拦截实现
2、声明拦截类型(签名注解)
3、配置plugin
其他问题
1、多个拦截器的执行顺序
2、sql_safe_updates=1
开启安全更新模式(safe update mode)
相比于Mybaties拦截器,限制更加严格,自由性不高。
在update操作中:当where条件中列(column)没有索引可用且无limit限制时会拒绝更新。where条件为常量且无limit限制时会拒绝更新。
在delete操作中: 当①where条件为常量,②或where条件为空,③或where条件中 列(column)没有索引可用且无limit限制时拒绝删除。
参考链接
【获取代码可联系作者】