26
26
будет реализован как Singleton.
27
27
*/
28
28
public class TicketDao {
29
- // Переменная экземпляра объекта
30
- private static TicketDao INSTANCE ;
31
- // Пустой приватный конструктор
32
- private TicketDao () {
33
- }
34
- /*
35
- Метод позволяющий инициализировать
36
- единственный объект класса TicketDao
37
- */
29
+ private static TicketDao INSTANCE ; // Переменная экземпляра объекта
30
+ private TicketDao () {} // Пустой приватный конструктор
31
+
32
+ /* Метод позволяющий инициализировать единственный объект класса TicketDao */
38
33
public static TicketDao getInstance () {
39
34
if (INSTANCE == null ){
40
35
INSTANCE = new TicketDao ();
41
36
}
42
37
return INSTANCE ;
43
38
}
44
- /*
45
- SQL запрос на удаление одной записи из таблицы
46
- Ticket по ID в формате PrepareStatement
47
- */
39
+
40
+ /* SQL запрос на удаление одной записи из таблицы Ticket по ID в формате PrepareStatement */
48
41
private static final String DELETE_SQL = """
49
42
DELETE FROM flight_repository.ticket
50
43
WHERE id = ?
51
44
""" ;
52
- /*
53
- SQL запрос на вставку одной записи в таблицу
54
- Ticket в формате PrepareStatement
55
- */
45
+
46
+ /* SQL запрос на вставку одной записи в таблицу Ticket в формате PrepareStatement */
56
47
private static final String SAVE_SQL = """
57
48
INSERT INTO flight_repository.ticket (passenger_no, passenger_name, flight_id, seat_no, cost)
58
49
VALUES (?, ?, ?, ?, ?);
59
50
""" ;
60
- /*
61
- SQL запрос на изменение одной записи в таблице
62
- Ticket по ID в формате PrepareStatement
63
- */
51
+
52
+ /* SQL запрос на изменение одной записи в таблице Ticket по ID в формате PrepareStatement */
64
53
private static final String UPDATE_SQL = """
65
54
UPDATE flight_repository.ticket
66
55
SET passenger_no = ?,
@@ -70,6 +59,7 @@ public static TicketDao getInstance() {
70
59
cost = ?
71
60
WHERE id = ?
72
61
""" ;
62
+
73
63
/* SQL запрос на получение всех записей из таблицы Ticket */
74
64
private static final String FIND_ALL_SQL = """
75
65
SELECT id,
@@ -80,13 +70,12 @@ public static TicketDao getInstance() {
80
70
cost
81
71
FROM flight_repository.ticket
82
72
""" ;
83
- /*
84
- SQL запрос на получение данных одной записи в
85
- таблице Ticket по ID в формате PrepareStatement
86
- */
73
+
74
+ /* SQL запрос на получение данных одной записи в таблице Ticket по ID в формате PrepareStatement */
87
75
private static final String FIND_BY_ID_SQL = FIND_ALL_SQL + """
88
76
WHERE id = ?
89
77
""" ;
78
+
90
79
/*
91
80
Метод для работы с FIND_ALL_SQL запросом. Перегруженный метод
92
81
*.findAll(TicketFilter filter) приведен в самом низу данного
@@ -103,20 +92,17 @@ public List<Ticket> findAll() {
103
92
ConnectionPoolManager .getConnectionFromPool ();
104
93
var preparedStatement =
105
94
connection .prepareStatement (FIND_ALL_SQL )) {
106
- /* Получаем результат запроса, как коллекцию SET */
107
- var resultSet = preparedStatement .executeQuery ();
108
- /* Создаем список для хранения билетов полученных по запросу */
109
- List <Ticket > tickets = new ArrayList <>();
95
+ var resultSet = preparedStatement .executeQuery (); // Получаем результат запроса, как коллекцию SET
96
+ List <Ticket > tickets = new ArrayList <>(); // Создаем список для хранения билетов полученных по запросу
110
97
while (resultSet .next ()) {
111
- /* Загружаем полученный список в коллекцию*/
112
- tickets .add (buildTicket (resultSet ));
98
+ tickets .add (buildTicket (resultSet )); // Загружаем полученный список в коллекцию
113
99
}
114
- /* Возвращаем результат */
115
- return tickets ;
100
+ return tickets ; // Возвращаем результат
116
101
} catch (SQLException throwables ) {
117
102
throw new DaoException (throwables );
118
103
}
119
104
}
105
+
120
106
/*
121
107
Метод для получения данных о билете по ID.
122
108
Результат запроса неоднозначен, поскольку
@@ -166,6 +152,7 @@ public Optional<Ticket> findById(Long id) {
166
152
throw new DaoException (throwables );
167
153
}
168
154
}
155
+
169
156
/* Метод для обновления сведений о билете */
170
157
public void update (Ticket ticket ) {
171
158
/* Создаем соединение с базой и передаем UPDATE_SQL запрос */
@@ -186,6 +173,7 @@ public void update(Ticket ticket) {
186
173
throw new DaoException (throwables );
187
174
}
188
175
}
176
+
189
177
/*
190
178
Метод для сохранения данных нового билета в базе данных.
191
179
Сам объект-билет передается в качестве параметра из которого
@@ -221,6 +209,7 @@ public Ticket save(Ticket ticket) {
221
209
throw new DaoException (throwables );
222
210
}
223
211
}
212
+
224
213
/* Метод для удаления записи из базы данных по ID */
225
214
public boolean delete (Long id ) {
226
215
/* Try-with-resources для объектов Connection и PrepareStatement */
@@ -236,6 +225,7 @@ public boolean delete(Long id) {
236
225
throw new DaoException (throwables );
237
226
}
238
227
}
228
+
239
229
/*
240
230
Метод извлекающий сведения о билете из объекта
241
231
ResultSet и применяемый в методах *.findById()
@@ -251,6 +241,7 @@ private Ticket buildTicket(ResultSet resultSet) throws SQLException {
251
241
resultSet .getBigDecimal ("cost" )
252
242
);
253
243
}
244
+
254
245
/* Перегруженный метод findAll с фильтрацией по входным параметрам */
255
246
public List <Ticket > findAll (TicketFilter filter ) {
256
247
List <Object > parameters = new ArrayList <>(); // Список для хранения параметров заменяющих символ '?' в SQL запросе
@@ -392,18 +383,13 @@ public List<Ticket> findAll(TicketFilter filter) {
392
383
for (int i = 0 ; i < parameters .size (); i ++) {
393
384
preparedStatement .setObject (i + 1 , parameters .get (i ));
394
385
}
395
- /* Для наглядности выводим на экран получившийся SQl запрос */
396
- System .out .println (preparedStatement );
397
- /* Отправляем запрос в базу и получаем результирующую выборку */
398
- var resultSet = preparedStatement .executeQuery ();
399
- /* Коллекция куда мы поместим результат выборки */
400
- List <Ticket > tickets = new ArrayList <>();
401
- /* Заполняем коллекцию */
386
+ System .out .println (preparedStatement ); // Для наглядности выводим на экран получившийся SQl запрос
387
+ var resultSet = preparedStatement .executeQuery (); // Отправляем запрос в базу и получаем результирующую выборку
388
+ List <Ticket > tickets = new ArrayList <>(); // Коллекция куда мы поместим результат выборки
402
389
while (resultSet .next ()) {
403
- tickets .add (buildTicket (resultSet ));
390
+ tickets .add (buildTicket (resultSet ));// Заполняем коллекцию
404
391
}
405
- /* Возвращаем коллекцию */
406
- return tickets ;
392
+ return tickets ; // Возвращаем коллекцию
407
393
} catch (SQLException throwables ) {
408
394
throw new DaoException (throwables );
409
395
}
0 commit comments