Chapter 20. JoSQL
Overview
The JoSQL (SQL for Java objects) language enables you to evaluate predicates and expressions in Apache Camel. JoSQL employs a SQL-like query syntax to perform selection and ordering operations on data from in-memory Java objects — however, JoSQL is not a database. In the JoSQL syntax, each Java object instance is treated like a table row and each object method is treated like a column name. Using this syntax, it is possible to construct powerful statements for extracting and compiling data from collections of Java objects. For details, see http://josql.sourceforge.net/.
Adding the JoSQL module
To use JoSQL in your routes you need to add a dependency on camel-josql
to your project as shown in Example 20.1, “Adding the camel-josql dependency”.
Example 20.1. Adding the camel-josql dependency
<!-- Maven POM File --> ... <dependencies> ... <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-josql</artifactId> <version>${camel-version}</version> </dependency> ... </dependencies>
Static import
To use the sql()
static method in your application code, include the following import statement in your Java source files:
import static org.apache.camel.builder.sql.SqlBuilder.sql;
Variables
Table 20.1, “SQL variables” lists the variables that are accessible when using JoSQL.
Name | Type | Description |
---|---|---|
|
| The current Exchange |
|
| The IN message |
|
| The OUT message |
property |
| the Exchange property whose key is property |
header |
| the IN message header whose key is header |
variable |
| the variable whose key is variable |
Example
Example 20.2, “Route using JoSQL” shows a route that uses JoSQL.
Example 20.2. Route using JoSQL
<camelContext> <route> <from uri="direct:start"/> <setBody> <language language="sql">select * from MyType</language> </setBody> <to uri="seda:regularQueue"/> </route> </camelContext>