public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (isObjectMethod(method)) { return null; } final Class<?> declaringInterface = findDeclaringInterface(proxy, method); if (Pager.class.isAssignableFrom(method.getReturnType())) { return new MyBatisMapperMethod( getDeclaringInterface(declaringInterface, method), method, this.sqlSession) .execute(args); } MapperMethod mapperMethod = new MapperMethod( getDeclaringInterface(declaringInterface, method), method, this.sqlSession.getConfiguration()); Object result = mapperMethod.execute(this.sqlSession, args); if ((result == null) && (method.getReturnType().isPrimitive())) { throw new BindingException( "Mapper method '" + method.getName() + "' (" + method.getDeclaringClass() + ") attempted to return null from a method with a primitive return type (" + method.getReturnType() + ")."); } return result; }
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (Object.class.equals(method.getDeclaringClass())) { try { return method.invoke(this, args); } catch (Throwable t) { throw ExceptionUtil.unwrapThrowable(t); } } final MapperMethod mapperMethod = cachedMapperMethod(method); return mapperMethod.execute(sqlSession, args); }