Затем мы переходим к операциям CRUD — создание, обновление и удаление. Эти операции часто используются при обработке бизнес-логики.
Демо-проекты:
up-thea
package up.god.micro.tabular;
import io.vertx.core.json.JsonObject;
import io.vertx.up.annotations.Address;
import io.vertx.up.annotations.Codex;
import io.vertx.up.annotations.EndPoint;
import javax.ws.rs.*;
@EndPoint
@Path("/api")
public interface TabularApi {
@Path("tabular")
@POST
@Address("ZERO://QUEUE/TABULAR/CREATE")
JsonObject create(@BodyParam @Codex JsonObject data);
@Path("tabular/{id}")
@PUT
@Address("ZERO://QUEVE/TABULAR/UPDATE")
JsonObject update(@PathParam("id") Long id, @BodyParam @Codex JsonObject data);
@Path("tabular/{id}")
@DELETE
@Address("ZERO://QUEUE/TABULAR/DELETE")
JsonObject delete(@PathParam("id") Long id);
}
Выше приведены три API, которые соответствуют операциям вставки, обновления и удаления.
Здесь мы добавляем методы в исходный потребительский код следующим образом:
package up.god.micro.tabular;
import io.vertx.core.Future;
import io.vertx.core.json.JsonObject;
import io.vertx.up.unity.Ux;
import io.vertx.up.annotations.Address;
import io.vertx.up.annotations.Queue;
import io.vertx.up.commune.Envelop;
import jakarta.inject.Inject;
@Queue
public class TabularWorker {
@Inject
private transient TabularStub stub;
@Address("ZERO://QUEUE/TABULAR/ID")
Future<JsonObject> get(final Envelop envelop) {
final Long id = Ux.getLong(envelop);
// Первая версия
return this.stub.fetchOne(id);
}
// Новые добавленные три метода для операций записи.
@Address("ZERO://QUEUE/TABULAR/CREATE")
Future<JsonObject> create(final Envelop envelop) {
final JsonObject data = Ux.getJson(envelop);
return this.stub.create(data);
}
@Address("ZERO://QUEUE/TABULAR/UPDATE")
Future<JsonObject> update(final Envelop envelop) {
final Long id = Ux.getLong(envelop);
final JsonObject data = Ux.getJson1(envelop);
return this.stub.update(id, data);
}
@Address("ZERO://QUEUE/TABULAR/DELETE")
Future<JsonObject> delete(final Envelop envelop) {
final Long id = Ux.getLong(envelop);
return this.stub.delete(id);
}
}
Определение сервисного интерфейса следующее:
package up.god.micro.tabular;
import io.vertx.core.Future;
import io.vertx.core.json.JsonObject;
public interface TabularStub {
Future<JsonObject> fetchOne(Long id);
// Новые добавленные три API для операций записи.
Future<JsonObject> create(JsonObject data);
Future<JsonObject> update(Long id, JsonObject data);
Future<JsonObject> delete(Long id);
}
Здесь следует отметить, что мы разделим различный логический код для вставки, обновления и удаления, чтобы объяснить использование класса Ux.Jooq.
@Override
public Future<JsonObject> create(final JsonObject data) {
final SysTabular tabular = Ux.fromJson(data, SysTabular.class, "tabular");
tabular.setZCreateTime(LocalDateTime.now());
tabular.setZUpdateTime(LocalDateTime.now());
return Ux.Jooq.on(SysTabularDao.class)
.insertReturningPrimaryAsync(tabular, tabular::setPkId)
.compose(item -> Ux.thenJsonOne(item, "tabular"));
}
Здесь первая часть такая же, как мы вызывали API Ux.Jooq.on для подключения нашего клиента к классу dao SysTabularDao, затем мы вызвали метод insertReturningPrimaryAsync для объекта tabular, этот метод поможет вам установить автоматически сгенерированный первичный ключ, здесь следует упомянуть:
Существует ещё один метод insertAsync, который вы можете использовать, если вас не волнует возвращаемый сгенерированный ключ, он выглядит следующим образом:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )