mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 01:28:24 +08:00
增加了@UseDataSource取值动态处理逻辑支持处理器
1:DataSourceProcessor 为处理器接口 2:DelegatingDataSourceProcessor 为DataSourceProcessor的委托类,目的增强扩大 DataSourceProcessor类或对象的结构 3:ParamIndexDataSourceProcessor 简单参数所以读取的支持处理器 4:SpelExpressionDataSourceProcessor 支持SPEL 表达式的处理器类
This commit is contained in:
parent
8a14307fba
commit
3ef1ed59ad
@ -9,12 +9,16 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* DataSourceProcessor 委托扩展类,对 DataSourceProcessor 结构进行扩大和增强
|
* DataSourceProcessor 委托扩展类,对 DataSourceProcessor 结构进行扩大和增强
|
||||||
|
* 如果多个实例化,建议通过 DelegatingDataSourceProcessor.with(多个解析处理器实例) 方式进行实例化。
|
||||||
|
* 需要注意的是委托解析处理器之间有先后顺序,一点排列前面的解析处理器正常处理后,将直接返回处理值,不再往下传递处理
|
||||||
*
|
*
|
||||||
* @author Alay
|
* @author Alay
|
||||||
* @since 2024-12-07 15:38
|
* @since 2024-12-07 15:38
|
||||||
*/
|
*/
|
||||||
public class DelegatingDataSourceProcessor implements DataSourceProcessor {
|
public class DelegatingDataSourceProcessor implements DataSourceProcessor {
|
||||||
|
/**
|
||||||
|
* 多个处理器委托集合(使用时请注意 DataSourceProcessor 的顺序)
|
||||||
|
*/
|
||||||
private final List<DataSourceProcessor> delegates;
|
private final List<DataSourceProcessor> delegates;
|
||||||
|
|
||||||
|
|
||||||
@ -43,7 +47,7 @@ public class DelegatingDataSourceProcessor implements DataSourceProcessor {
|
|||||||
@Override
|
@Override
|
||||||
public String process(String dataSourceKey, Object mapper, Method method, Object[] arguments) {
|
public String process(String dataSourceKey, Object mapper, Method method, Object[] arguments) {
|
||||||
for (DataSourceProcessor delegate : delegates) {
|
for (DataSourceProcessor delegate : delegates) {
|
||||||
// 使用时请注意 DataSourceProcessor 的顺序,一旦匹配到处理器将进行中断处理并返回处理结果
|
// 使用时请注意 DataSourceProcessor 的顺序,一旦匹配到处理器将进行终止处理链,并返回当前处理结果
|
||||||
String returnKey = delegate.process(dataSourceKey, mapper, method, arguments);
|
String returnKey = delegate.process(dataSourceKey, mapper, method, arguments);
|
||||||
if (null != returnKey) return returnKey;
|
if (null != returnKey) return returnKey;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user