public interface StatementRunner
StatementRunner
are guaranteed
to execute in order, meaning changes made by one statement will be seen
by all subsequent statements in the same StatementRunner
.
However, to allow handling very large results, and to improve performance,
result streams are retrieved lazily. This means that when any of the
run(Statement)
methods return a result, the statement has only
started executing - it may not have completed yet. Most of the
time, you will not notice this, because the driver automatically
waits for statements to complete at specific points to fulfill its contracts.
Specifically, the driver will ensure all outstanding statements are completed
whenever you:
StatementResult.next()
,
StatementResult.consume()
.Transaction.close()
Session.close()
transactions
or return the session you used to the pool using
Session.close()
.
While these semantics introduce some complexity, it gives the driver the ability
to handle infinite result streams (like subscribing to events), significantly lowers
the memory overhead for your application and improves performance.Session
,
Transaction
Modifier and Type | Method and Description |
---|---|
StatementResult |
run(Statement statement)
Run a statement and return a result stream.
|
StatementResult |
run(String statementTemplate)
Run a statement and return a result stream.
|
StatementResult |
run(String statementTemplate,
Map<String,Object> statementParameters)
Run a statement and return a result stream.
|
StatementResult |
run(String statementTemplate,
Record statementParameters)
Run a statement and return a result stream.
|
StatementResult |
run(String statementTemplate,
Value parameters)
Run a statement and return a result stream.
|
org.neo4j.driver.v1.types.TypeSystem |
typeSystem() |
StatementResult run(String statementTemplate, Value parameters)
Value
as its input. This is useful
if you want to take a map-like value that you've gotten from a prior result
and send it back as parameters.
If you are creating parameters programmatically, run(String, Map)
might be more helpful, it converts your map to a Value
for you.
StatementResult cursor = session.run( "MATCH (n) WHERE n.name = {myNameParam} RETURN (n)",
Values.parameters( "myNameParam", "Bob" ) );
statementTemplate
- text of a Neo4j statementparameters
- input parameters, should be a map Value, see Values.parameters(Object...)
.StatementResult run(String statementTemplate, Map<String,Object> statementParameters)
Map
of parameters. The values in the map
must be values that can be converted to Neo4j types. See Values.parameters(Object...)
for
a list of allowed types.
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("myNameParam", "Bob");
StatementResult cursor = session.run( "MATCH (n) WHERE n.name = {myNameParam} RETURN (n)",
parameters );
statementTemplate
- text of a Neo4j statementstatementParameters
- input data for the statementStatementResult run(String statementTemplate, Record statementParameters)
Record
of parameters, which can be useful
if you want to use the output of one statement as input for another.statementTemplate
- text of a Neo4j statementstatementParameters
- input data for the statementStatementResult run(String statementTemplate)
statementTemplate
- text of a Neo4j statementStatementResult run(Statement statement)
Statement statement = new Statement( "MATCH (n) WHERE n.name={myNameParam} RETURN n.age" );
StatementResult cursor = session.run( statement.withParameters( Values.parameters( "myNameParam", "Bob" ) ) );
statement
- a Neo4j statement@Experimental org.neo4j.driver.v1.types.TypeSystem typeSystem()
Copyright © 2016. All rights reserved.