Запрос уникальных данных по одному полю
В этой главе мы рассмотрим некоторые распространённые ситуации: запрос уникальной записи данных по одному полю.
Демо-проекты:
up-thea
Например, иногда вам может потребоваться запросить запись пользователя по имени вместо первичного ключа. В такой ситуации операции чтения, которые мы представили, могут быть бесполезны.
package up.god.micro.fetch;
import io.vertx.up.annotations.Address;
import io.vertx.up.annotations.EndPoint;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@EndPoint
@Path("/api")
public interface FetchApi {
@Path("tabular/by/{name}")
@GET
@Address("ZERO://QUEUE/BY/NAME")
String fetchByName(@PathParam("name") String name);
}
package up.god.micro.fetch;
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 FetchWorker {
@Inject
private transient FetchStub stub;
@Address("ZERO://QUEUE/BY/NAME")
public Future<JsonObject> byName(final Envelop envelop) {
final String name = Ux.getString(envelop);
return this.stub.fetchByName(name);
}
}
package up.god.micro.fetch;
import io.vertx.core.Future;
import io.vertx.core.json.JsonObject;
public interface FetchStub {
Future<JsonObject> fetchByName(String name);
}
package up.god.micro.fetch;
import io.vertx.core.Future;
import io.vertx.core.json.JsonObject;
import io.vertx.up.unity.Ux;
import up.god.domain.tables.daos.SysTabularDao;
import up.god.domain.tables.pojos.SysTabular;
public class FetchService implements FetchStub {
@Override
public Future<JsonObject> fetchByName(final String name) {
return Ux.Jooq.on(SysTabularDao.class)
.<SysTabular>fetchOneAsync("S_NAME", name)
.compose(item -> Ux.thenJsonOne(item, "tabular"));
}
}
Здесь мы использовали метод fetchOneAsync
для запроса данных по столбцу S_NAME
, и вы можете протестировать его следующим образом:
URL: http://localhost:6093/api/tabular/by/%e6%8c%82%e7%89%8c%e4%bb%b7
Метод: GET
Ответ:
{
"data": {
"key": 1,
"active": true,
"createTime": "2018-02-07T12:09:32",
"name": "挂牌价",
"code": "Standard",
"type": "code.pricecat",
"order": 1,
"sigma": "ENhwBAJPZuSgIAE5EDakR6yrIQbOoOPq",
"language": "cn"
}
}
Помимо API fetchOneAsync
, класс Ux.Jooq
предоставляет все API fetchOne
, такие как:
<T> Future<T> fetchOneAsync(String column, Object value)
<T> Future<T> fetchOneAndAsync(JsonObject andFilters)
Эта глава описывает, как использовать метод fetchOne
. Мы продолжим знакомить вас с операциями выборки и расскажем разработчикам, как использовать andFilters
в следующих руководствах.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )