Фільтрування та сортування даних

Запити до бази даних PostgreSQL у Java

Miller Trujillo

Staff Software Engineer

Навіщо фільтрувати й сортувати?

  • Більшість застосунків не показують усі записи
  • Потрібно звузити результати
  • Упорядкувати дані змістовно
  • Показувати керовані частини

$$

$$

$$

$$

  • WHERE, ORDER BY, LIMIT, OFFSET ✨

Онлайн-книгарня

Запити до бази даних PostgreSQL у Java

Фільтрування з WHERE

String sql = "SELECT * FROM books WHERE publication_year > ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 2000); ResultSet rs = pstmt.executeQuery();
  • Використовуйте плейсхолдер ? і прив'язуйте через setInt()
  • Java-код той самий, змінюється лише SQL
Запити до бази даних PostgreSQL у Java

Чи можна фільтрувати в Java?

  • Фільтрувати на рівні бази даних:
    • Менше переданих даних ✅
    • Нема перевантаження мережі ✅
    • Краще швидкодія ✅
  • Виняток: складна логіка (зовнішні API, моделі ШІ) 💡

Аналогія з замовленням їжі

Запити до бази даних PostgreSQL у Java

Сортування з ORDER BY

String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year DESC";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 3);
ResultSet rs = pstmt.executeQuery();
// Adding dynamic behavior
boolean desc = true;
String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year ";

sql += desc ? "DESC" : "ASC";
  • += додає текст до SQL-рядка
  • ?: — тернарний оператор (стислий if-else)
Запити до бази даних PostgreSQL у Java

Пагінація з LIMIT та OFFSET

  • LIMIT керує кількістю рядків у відповіді
  • OFFSET пропускає рядки перед поверненням результатів
  • ORDER BY гарантує послідовні сторінки результатів
String sql = "SELECT title FROM books ORDER BY title ASC LIMIT ? OFFSET ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 10); // LIMIT: 10 книг на сторінку pstmt.setInt(2, 20); // OFFSET: пропустити перші 20 рядків ResultSet rs = pstmt.executeQuery();
Запити до бази даних PostgreSQL у Java

Давайте потренуємось!

Запити до бази даних PostgreSQL у Java

Preparing Video For Download...