代码拉取完成,页面将自动刷新
15
:whale: 添加高级的灵活配置SeniorConfig, 赠送给喜欢捣腾的哥们.
已合并
为了不必强制用户继承 BaseMapper 接口才能使用内置实现, 而是通过配置映射的方式
在把内置实现代理独立出来的同时, 又提供方法实现的扩展(Ami).
这个方法实现(Ami)除了提供扩展的同时,又不必强制用户使用这个方法名, 让用户更自由
想上面举出了两个示例:
原来内置的方法名是 all , 我改成了 selectAll
原来内置的方法名是 allCount , 我改成了 selectCount
具体详细情况查看: AmiInnerProxyMapperInvokeTest.testAmi() 方法.
这次扩展不会影响原有代码.
具体改动的源代码地方有:
MapperJavaProxy.java 文件
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String sqlId = this.builder.getIdGen().getId(entityClass, method);
Class c = method.getDeclaringClass();
MapperInvoke invoke = SeniorConfig.$.getMapperInvokeProxy(c);
if (invoke != null) {
// 内部都是无状态的, 不必每次创建新对象.
return invoke.call(this.sqlManager, this.entityClass, sqlId, method, args);
// }
// if (c == BaseMapper.class) {
// invoke = new InnerMapperInvoke();
//// invoke = AmiInnerProxyMapperInvoke.$;
// Object ret = invoke.call(this.sqlManager, this.entityClass, sqlId, method, args);
// return ret;
} else {
MethodDesc.java 文件
public static MethodDesc getMetodDesc(SQLManager sm, Class entityClass, Method m, String sqlId) {
CallKey callKey = new CallKey(m,entityClass);
MethodDesc desc = cache.get(callKey);
if (desc != null)
return desc;
// desc = new MethodDesc();
desc = SeniorConfig.$.createMethodDesc();
desc.doParse(sm, entityClass, m, sqlId);
cache.put(callKey, desc);
return desc;
}
不出意外就这两个地方.