Skip to content

Commit 8af9538

Browse files
Merge pull request #21 from ydb-platform/fix-3.1-lesson
2 parents 30ad25f + 6ae53cd commit 8af9538

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

dev-1/lesson-3.1/java/src/main/java/tech/ydb/app/Application.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ public static void main(String[] args) {
3030
schemaYdbRepository.dropSchema();
3131
schemaYdbRepository.createSchema();
3232

33-
issueYdbRepository.addIssue("Ticket 1");
33+
var firstIssue = issueYdbRepository.addIssue("Ticket 1");
3434
issueYdbRepository.addIssue("Ticket 2");
3535
issueYdbRepository.addIssue("Ticket 3");
3636

3737
for (var issue : issueYdbRepository.findAll()) {
3838
LOGGER.info("Issue: {}", issue);
3939
}
40+
41+
LOGGER.info("First issue: {}", issueYdbRepository.findById(firstIssue.id()));
4042
}
4143
}
4244
}

dev-1/lesson-3.1/java/src/main/java/tech/ydb/app/IssueYdbRepository.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import tech.ydb.table.query.Params;
1111
import tech.ydb.table.values.PrimitiveValue;
1212

13+
import javax.annotation.Nullable;
14+
1315
/**
1416
* Репозиторий для работы с тикетами в базе данных YDB
1517
* Реализует операции добавления и чтения тикетов
@@ -61,6 +63,29 @@ UPSERT INTO issues (id, title, created_at)
6163
return new Issue(id, title, now);
6264
}
6365

66+
/**
67+
* Возвращает тикет по заданному id
68+
*
69+
* @return найденный тикет или null, если тикет с указанным id не найден
70+
*/
71+
@Nullable
72+
public Issue findById(long id) {
73+
// Выполняем SELECT запрос в режиме SNAPSHOT_RO для чтения данных
74+
// Этот режим сообщает серверу, что это транзакция только для чтения.
75+
// Это позволяет снизить накладные расходы на подготовку к изменениям и просто читать данные из
76+
// одного снимка базы данных.
77+
var resultSet = queryServiceHelper.executeQuery("SELECT id, title, created_at FROM issues WHERE id=$id;",
78+
TxMode.SNAPSHOT_RO, Params.of("$id", PrimitiveValue.newInt64(id)));
79+
80+
var resultSetReader = resultSet.getResultSet(0);
81+
82+
return resultSetReader.next() ? new Issue(
83+
resultSetReader.getColumn(0).getInt64(),
84+
resultSetReader.getColumn(1).getText(),
85+
resultSetReader.getColumn(2).getTimestamp()
86+
) : null;
87+
}
88+
6489
/**
6590
* Получает все тикеты из базы данных
6691
*

0 commit comments

Comments
 (0)