为了不必强制用户继承 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;

   }

不出意外就这两个地方.