public class OptimisticLockerInnerInterceptor extends java.lang.Object implements InnerInterceptor
Intercept on Executor.update;
Support version types: int/Integer, long/Long, java.util.Date, java.sql.Timestamp
For extra types, please define a subclass and override getUpdatedVersionVal() method.
How to use?
(1) Define an Entity and add Version annotation on one entity field.
(2) Add OptimisticLockerInnerInterceptor into mybatis plugin.
How to work?
if update entity with version column=1:
(1) no OptimisticLockerInnerInterceptor:
SQL: update tbl_test set name='abc' where id=100001;
(2) add OptimisticLockerInnerInterceptor:
SQL: update tbl_test set name='abc',version=2 where id=100001 and version=1;
| 构造器和说明 |
|---|
OptimisticLockerInnerInterceptor() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
beforeUpdate(org.apache.ibatis.executor.Executor executor,
org.apache.ibatis.mapping.MappedStatement ms,
java.lang.Object parameter)
Executor.update(MappedStatement, Object) 操作前置处理
改改sql啥的 |
protected void |
doOptimisticLocker(java.util.Map<java.lang.String,java.lang.Object> map,
java.lang.String msId) |
protected java.lang.Object |
getUpdatedVersionVal(java.lang.Class<?> clazz,
java.lang.Object originalVersionVal)
This method provides the control for version value.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitbeforePrepare, beforeQuery, setProperties, willDoQuery, willDoUpdatepublic void beforeUpdate(org.apache.ibatis.executor.Executor executor,
org.apache.ibatis.mapping.MappedStatement ms,
java.lang.Object parameter)
throws java.sql.SQLException
InnerInterceptorExecutor.update(MappedStatement, Object) 操作前置处理
改改sql啥的
beforeUpdate 在接口中 InnerInterceptorexecutor - Executor(可能是代理对象)ms - MappedStatementparameter - parameterjava.sql.SQLExceptionprotected void doOptimisticLocker(java.util.Map<java.lang.String,java.lang.Object> map,
java.lang.String msId)
protected java.lang.Object getUpdatedVersionVal(java.lang.Class<?> clazz,
java.lang.Object originalVersionVal)
originalVersionVal - ignore