From 375f74a8477aaf2997cbc8d664f6aa9ab2549306 Mon Sep 17 00:00:00 2001 From: Julien Viet Date: Thu, 12 Dec 2024 22:50:20 +0100 Subject: [PATCH] SQL client template example with JPMS --- jpms-examples/README.adoc | 4 ++ jpms-examples/pom.xml | 10 +++++ .../sqltemplate/UserDataObjectRowMapper.java | 31 +++++++++++++ .../jpms/sqltemplate/UserDataObject.java | 44 +++++++++++++++++++ .../jpms/sqltemplate/package-info.java | 4 ++ jpms-examples/src/main/java/module-info.java | 3 ++ 6 files changed, 96 insertions(+) create mode 100644 jpms-examples/src/main/generated/io/vertx/example/jpms/sqltemplate/UserDataObjectRowMapper.java create mode 100644 jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/UserDataObject.java create mode 100644 jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/package-info.java diff --git a/jpms-examples/README.adoc b/jpms-examples/README.adoc index 4b27f6f40..50f7eeb0e 100644 --- a/jpms-examples/README.adoc +++ b/jpms-examples/README.adoc @@ -136,3 +136,7 @@ Since it requires a database, you can run it from a link:src/test/java/io/vertx/ == Service Proxy A simple link:src/main/java/io/vertx/example/jpms/serviceproxy/UserService.java[service proxy] example. + +== Sql Client Template + +An SQL client link:src/main/java/io/vertx/example/jpms/sqltemplate/UserDataObject.java[template]. diff --git a/jpms-examples/pom.xml b/jpms-examples/pom.xml index 66d872e45..2c972b7ce 100644 --- a/jpms-examples/pom.xml +++ b/jpms-examples/pom.xml @@ -55,6 +55,11 @@ io.vertx vertx-codegen-api + + io.vertx + vertx-sql-client-templates + 5.0.0-SNAPSHOT + com.aayushatharva.brotli4j @@ -248,6 +253,11 @@ io.vertx vertx-service-proxy + + io.vertx + vertx-sql-client-templates + 5.0.0-SNAPSHOT + diff --git a/jpms-examples/src/main/generated/io/vertx/example/jpms/sqltemplate/UserDataObjectRowMapper.java b/jpms-examples/src/main/generated/io/vertx/example/jpms/sqltemplate/UserDataObjectRowMapper.java new file mode 100644 index 000000000..4b16c75c4 --- /dev/null +++ b/jpms-examples/src/main/generated/io/vertx/example/jpms/sqltemplate/UserDataObjectRowMapper.java @@ -0,0 +1,31 @@ +package io.vertx.example.jpms.sqltemplate; + +/** + * Mapper for {@link UserDataObject}. + * NOTE: This class has been automatically generated from the {@link UserDataObject} original class using Vert.x codegen. + */ +@io.vertx.codegen.annotations.VertxGen +public interface UserDataObjectRowMapper extends io.vertx.sqlclient.templates.RowMapper { + + UserDataObjectRowMapper INSTANCE = new UserDataObjectRowMapper() { }; + + @io.vertx.codegen.annotations.GenIgnore + java.util.stream.Collector> COLLECTOR = java.util.stream.Collectors.mapping(INSTANCE::map, java.util.stream.Collectors.toList()); + + @io.vertx.codegen.annotations.GenIgnore + default UserDataObject map(io.vertx.sqlclient.Row row) { + UserDataObject obj = new UserDataObject(); + Object val; + int idx; + if ((idx = row.getColumnIndex("id")) != -1 && (val = row.getLong(idx)) != null) { + obj.setId((long)val); + } + if ((idx = row.getColumnIndex("first_name")) != -1 && (val = row.getString(idx)) != null) { + obj.setFirstName((java.lang.String)val); + } + if ((idx = row.getColumnIndex("last_name")) != -1 && (val = row.getString(idx)) != null) { + obj.setLastName((java.lang.String)val); + } + return obj; + } +} diff --git a/jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/UserDataObject.java b/jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/UserDataObject.java new file mode 100644 index 000000000..dc8e1284c --- /dev/null +++ b/jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/UserDataObject.java @@ -0,0 +1,44 @@ +package io.vertx.example.jpms.sqltemplate; + +import io.vertx.codegen.annotations.DataObject; +import io.vertx.codegen.format.SnakeCase; +import io.vertx.sqlclient.templates.annotations.Column; +import io.vertx.sqlclient.templates.annotations.RowMapped; +import io.vertx.sqlclient.templates.annotations.TemplateParameter; + +@DataObject +@RowMapped(formatter = SnakeCase.class) +public class UserDataObject { + + private long id; + private String firstName; + private String lastName; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + @TemplateParameter(name = "first_name") + @Column(name = "first_name") + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + @TemplateParameter(name = "last_name") + @Column(name = "last_name") + public void setLastName(String lastName) { + this.lastName = lastName; + } +} diff --git a/jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/package-info.java b/jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/package-info.java new file mode 100644 index 000000000..37a5f5e5f --- /dev/null +++ b/jpms-examples/src/main/java/io/vertx/example/jpms/sqltemplate/package-info.java @@ -0,0 +1,4 @@ +@ModuleGen(groupPackage = "io.vertx.example.jpms.sqltemplate", name = "sql-template") +package io.vertx.example.jpms.sqltemplate; + +import io.vertx.codegen.annotations.ModuleGen; diff --git a/jpms-examples/src/main/java/module-info.java b/jpms-examples/src/main/java/module-info.java index 9bba2d557..3d16e3945 100644 --- a/jpms-examples/src/main/java/module-info.java +++ b/jpms-examples/src/main/java/module-info.java @@ -27,6 +27,9 @@ requires io.vertx.codegen.api; requires io.vertx.codegen.json; + // SQL client template@ + requires io.vertx.sql.client.templates; + exports io.vertx.example.jpms.sqlclient; exports io.vertx.example.jpms.native_transport; exports io.vertx.example.jpms.serviceproxy;