code: public <T> QueryResultPage<T> queryPage(Class<T> clazz, DynamoDBQueryExpression queryExpression, DynamoDBMapperConfig config) {
          config = mergeConfig(config);
  
          QueryRequest queryRequest = createQueryRequestFromExpression(clazz, queryExpression, config);
  
          QueryResult scanResult = db.query(applyUserAgent(queryRequest));
          QueryResultPage<T> result = new QueryResultPage<T>();
          result.setResults(marshallIntoObjects(clazz, scanResult.getItems()));
          result.setLastEvaluatedKey(scanResult.getLastEvaluatedKey());
  
          return result;
      }
docs: Queries an Amazon DynamoDB table and returns a single page of matching
  results. The table to query is determined by looking at the annotations
  on the specified class, which declares where to store the object data in
  Amazon DynamoDB, and the query expression parameter allows the caller to
  filter results and control how the query is executed.
  
  @param <T>
  The type of the objects being returned.
  @param clazz
  The class annotated with DynamoDB annotations describing how
  to store the object data in AWS DynamoDB.
  @param queryExpression
  Details on how to run the query, including any conditions on
  the key values
  @param config
  The configuration to use for this query, which overrides the
  default provided at object construction.