Skip to content

Commit

Permalink
新增策略执行方法.
Browse files Browse the repository at this point in the history
  • Loading branch information
nieqiurong committed Jan 6, 2025
1 parent 97a8ef0 commit d851eab
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,13 @@ public static IgnoreStrategy getIgnoreStrategy(String key) {

/**
* 按指定策略执行指定方法 (忽略线程级别,参数执行级使用最高)
* 方法执行完成后后释放掉当前线程上的忽略策略.
* <p>
* 注意:
* <li>1.不要和{@link #handle(IgnoreStrategy)}一起混合使用,此方法只是简化操作,防止未释放掉资源造成的错误<li/>
* <li>2.不要和{@link InterceptorIgnore} 注解一起搭配使用,例如在mapper上的default方法里再调用此方法,最终优先级还是以此方法为准<li/>
* <li>3.记住,一旦调用了此方法,开始会覆盖你当前执行线程上的策略,结束必定会释放掉当前线程上的策略</>
* </p>
*
* @param ignoreStrategy 忽略策略
* @param supplier 执行方法
Expand All @@ -123,6 +130,29 @@ public static <T> T execute(IgnoreStrategy ignoreStrategy, Supplier<T> supplier)
}
}

/**
* 按指定策略执行指定方法 (忽略线程级别,参数执行级使用最高)
* 方法执行完成后后释放掉当前线程上的忽略策略.
* <p>
* 注意:
* <li>1.不要和{@link #handle(IgnoreStrategy)}一起混合使用,此方法只是简化操作,防止未释放掉资源造成的错误<li/>
* <li>2.不要和{@link InterceptorIgnore} 注解一起搭配使用,例如在mapper上的default方法里再调用此方法,最终优先级还是以此方法为准<li/>
* <li>3.记住,一旦调用了此方法,开始会覆盖你当前执行线程上的策略,结束必定会释放掉当前线程上的策略</>
* </p>
*
* @param ignoreStrategy 忽略策略
* @param runnable 执行方法
* @since 3.5.10
*/
public static void execute(IgnoreStrategy ignoreStrategy, Runnable runnable) {
try {
handle(ignoreStrategy);
runnable.run();
} finally {
clearIgnoreStrategy();
}
}

/**
* 通过方法获取策略信息(优先级方法注解>当前类注解)
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,16 @@ void test() {
Assertions.assertEquals(0, m.deleteById(entity.getId()));
Assertions.assertEquals(1, InterceptorIgnoreHelper.execute(IgnoreStrategy.builder().tenantLine(true).build(), () -> m.deleteById(entity.getId())));
});

doTest(m -> {
Entity entity = new Entity().setName("秋秋").setTenantId(2);
m.insert(entity);
Assertions.assertNull(m.selectById(entity.getId()));
InterceptorIgnoreHelper.execute(IgnoreStrategy.builder().tenantLine(true).build(), () -> {
Assertions.assertNotNull(m.selectById(entity.getId()));
Assertions.assertEquals(1, m.deleteById(entity.getId()));
});
});
}

@Override
Expand Down

0 comments on commit d851eab

Please sign in to comment.