mapepire-java
is a Java client SDK that leverages the mapepire-server
to provide a new and convenient way to access Db2 on IBM i.
Full Documentation: https://mapepire-ibmi.github.io
- Java 8 or later
Add mapepire-sdk
as a dependency in your project and make sure to use the latest version on the Maven Central Repository:
<dependency>
<groupId>io.github.mapepire-ibmi</groupId>
<artifactId>mapepire-sdk</artifactId>
<version>0.1.2</version> <!-- Use the latest version -->
</dependency>
In order for applications to use Db2 for i through this Java client SDK, the mapepire-server
daemon must be installed and started-up on each IBM i. Follow the instructions here to learn about the installation and startup process of the server component.
The following Java program initializes a DaemonServer
object that will be used to connect with the Server Component. A single SqlJob
object is created to facilitate this connection from the client side. A query
object is then initialized with a simple SELECT
query which is finally executed with 3 rows being fetched and the results being printed.
Note
To run this Java program, replace the credentials which are passed into the DaemonServer
object.
package io.github.app;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import io.github.mapepire_ibmi.Query;
import io.github.mapepire_ibmi.SqlJob;
import io.github.mapepire_ibmi.types.DaemonServer;
import io.github.mapepire_ibmi.types.QueryResult;
public final class App {
public static void main(String[] args) throws Exception {
// Initialize credentials
DaemonServer creds = new DaemonServer("HOST", 8076, "USER", "PASSWORD");
// Create a single job and connect
SqlJob job = new SqlJob();
job.connect(creds).get();
// Initialize and execute query
Query query = job.query("SELECT * FROM SAMPLE.DEPARTMENT");
QueryResult<Object> result = query.execute(3).get();
// Close query and job
query.close().get();
job.close();
// Convert to JSON string and output
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
String jsonString = mapper.writeValueAsString(result);
System.out.println(jsonString);
}
}
Output:
{
"id" : "query3",
"success" : true,
"error" : null,
"sql_rc" : 0,
"sql_state" : null,
"execution_time" : 174,
"metadata" : {
"column_count" : 5,
"columns" : [
{ "display_size" : 3, "label" : "DEPTNO", "name" : "DEPTNO", "type" : "CHAR", "precision" : 3, "scale" : 0 },
{ "display_size" : 36, "label" : "DEPTNAME", "name" : "DEPTNAME", "type" : "VARCHAR", "precision" : 36, "scale" : 0 },
{ "display_size" : 6, "label" : "MGRNO", "name" : "MGRNO", "type" : "CHAR", "precision" : 6, "scale" : 0 },
{ "display_size" : 3, "label" : "ADMRDEPT", "name" : "ADMRDEPT", "type" : "CHAR", "precision" : 3, "scale" : 0 },
{ "display_size" : 16, "label" : "LOCATION", "name" : "LOCATION", "type" : "CHAR", "precision" : 16, "scale" : 0 }
],
"job" : "058971/QUSER/QZDASOINIT",
"parameters" : null
},
"is_done" : false,
"has_results" : true,
"update_count" : -1,
"data" : [
{ "DEPTNO" : "A00", "DEPTNAME" : "SPIFFY COMPUTER SERVICE DIV.", "MGRNO" : "000010", "ADMRDEPT" : "A00", "LOCATION" : null },
{ "DEPTNO" : "B01", "DEPTNAME" : "PLANNING", "MGRNO" : "000020", "ADMRDEPT" : "A00", "LOCATION" : null },
{ "DEPTNO" : "C01", "DEPTNAME" : "INFORMATION CENTER", "MGRNO" : "000030", "ADMRDEPT" : "A00", "LOCATION" : null }
],
"parameter_count" : 0,
"output_parms" : null
}
Check out all the Java Sample Projects that showcase how this client SDK can be used in various applications.