JdbcTemplate দিয়ে Pagination এবং Sorting পরিচালনা

Spring JDBC এ Pagination এবং Sorting - স্প্রিং জেডিবিসি (Spring JDBC) - Java Technologies

321

স্প্রিং জেডিবিসি (Spring JDBC) ব্যবহার করে Pagination (পাতা ভাগ করা) এবং Sorting (সাজানো) পরিচালনা করা বেশ সহজ। সাধারণত, SQL কুয়েরির মধ্যে LIMIT এবং OFFSET ব্যবহার করে Pagination এবং ORDER BY ব্যবহার করে Sorting সম্পন্ন করা হয়। JdbcTemplate এর সাহায্যে এই কাজগুলি করা সম্ভব।

এখানে আমরা দুটি প্রধান বিষয় নিয়ে আলোচনা করব:

  1. Pagination: ডেটাবেসের ডেটা পৃষ্ঠায় ভাগ করে নিয়ে আসা।
  2. Sorting: ডেটাকে নির্দিষ্ট শর্তে সাজানো।

১. Pagination পরিচালনা (Using LIMIT and OFFSET)

Pagination করার জন্য সাধারণত SQL কুয়েরিতে LIMIT এবং OFFSET ব্যবহার করা হয়, যা একটি নির্দিষ্ট সংখ্যক রেকর্ড ফিরিয়ে আনে এবং পরবর্তী পৃষ্ঠায় যাওয়ার জন্য একটি OFFSET বা "প্রথম রেকর্ডের পজিশন" নির্ধারণ করে। JdbcTemplate এর সাহায্যে Pagination পরিচালনা করা সম্ভব।

উদাহরণ:

ধরা যাক, আমরা Employee টেবিল থেকে পৃষ্ঠা ভিত্তিক ডেটা বের করতে চাই, যেখানে প্রতি পৃষ্ঠায় ৫টি Employee রেকর্ড দেখানো হবে।

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import java.util.List;

public class EmployeeDao {

    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    public EmployeeDao(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
    }

    // Pagination Method
    public List<Employee> getEmployeesByPage(int pageNumber, int pageSize) {
        String sql = "SELECT * FROM Employee LIMIT :pageSize OFFSET :offset";

        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("pageSize", pageSize);
        parameters.addValue("offset", (pageNumber - 1) * pageSize);

        return namedParameterJdbcTemplate.query(sql, parameters, new EmployeeRowMapper());
    }
}

এখানে:

  • LIMIT :pageSize: প্রতি পৃষ্ঠায় কতটি রেকর্ড দেখতে হবে তা নির্ধারণ করে।
  • OFFSET :offset: কোন পৃষ্ঠায় আছি, তার ভিত্তিতে রেকর্ডের শুরু পয়েন্ট নির্ধারণ করে।

EmployeeRowMapper হল একটি কাস্টম RowMapper ক্লাস যা SQL রেকর্ডগুলিকে Employee অবজেক্টে রূপান্তর করবে।

Pagination ব্যবহার:

EmployeeDao employeeDao = new EmployeeDao(namedParameterJdbcTemplate);

// Get page 1 with 5 employees per page
List<Employee> page1 = employeeDao.getEmployeesByPage(1, 5);

// Get page 2 with 5 employees per page
List<Employee> page2 = employeeDao.getEmployeesByPage(2, 5);

২. Sorting পরিচালনা (Using ORDER BY)

Sorting করার জন্য SQL কুয়েরিতে ORDER BY ক্লজ ব্যবহার করা হয়। এটি ডেটাকে একটি নির্দিষ্ট কলামের মানের উপর ভিত্তি করে সাজানোর জন্য ব্যবহৃত হয়। আপনি নির্দিষ্ট কলাম অনুযায়ী ASC (ascending) বা DESC (descending) অর্ডারে ডেটা সাজাতে পারেন।

উদাহরণ:

ধরা যাক, আমরা Employee টেবিলের ডেটাকে name কলামের ভিত্তিতে সাজাতে চাই।

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import java.util.List;

public class EmployeeDao {

    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    public EmployeeDao(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
    }

    // Sorting Method
    public List<Employee> getEmployeesSortedByName(String sortOrder) {
        String sql = "SELECT * FROM Employee ORDER BY name " + sortOrder;

        return namedParameterJdbcTemplate.query(sql, new EmployeeRowMapper());
    }
}

এখানে:

  • ORDER BY name: name কলামের ভিত্তিতে ডেটা সাজানো হয়।
  • sortOrder: এটি একটি প্যারামিটার যা ASC বা DESC হতে পারে, যা বলে দেবে ডেটা ASCENDING বা DESCENDING অর্ডারে সাজানো হবে।

Sorting ব্যবহার:

EmployeeDao employeeDao = new EmployeeDao(namedParameterJdbcTemplate);

// Get employees sorted by name in ascending order
List<Employee> sortedAsc = employeeDao.getEmployeesSortedByName("ASC");

// Get employees sorted by name in descending order
List<Employee> sortedDesc = employeeDao.getEmployeesSortedByName("DESC");

৩. Pagination এবং Sorting একসাথে ব্যবহৃত

এখন ধরুন, আমরা একই সময়ে Pagination এবং Sorting করতে চাই। এটি করতে হলে LIMIT, OFFSET এবং ORDER BY কুয়েরি একসাথে ব্যবহার করতে হবে।

উদাহরণ:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import java.util.List;

public class EmployeeDao {

    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    public EmployeeDao(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
    }

    // Pagination and Sorting Method
    public List<Employee> getEmployeesByPageAndSort(int pageNumber, int pageSize, String sortOrder) {
        String sql = "SELECT * FROM Employee ORDER BY name " + sortOrder + " LIMIT :pageSize OFFSET :offset";

        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("pageSize", pageSize);
        parameters.addValue("offset", (pageNumber - 1) * pageSize);

        return namedParameterJdbcTemplate.query(sql, parameters, new EmployeeRowMapper());
    }
}

এখানে:

  • ORDER BY name: ডেটা name কলামের ভিত্তিতে সাজানো হচ্ছে।
  • LIMIT :pageSize OFFSET :offset: Pagination এর জন্য LIMIT এবং OFFSET ব্যবহার হচ্ছে।

Pagination এবং Sorting একসাথে ব্যবহার:

EmployeeDao employeeDao = new EmployeeDao(namedParameterJdbcTemplate);

// Get page 1, sorted by name in ascending order with 5 employees per page
List<Employee> page1SortedAsc = employeeDao.getEmployeesByPageAndSort(1, 5, "ASC");

// Get page 2, sorted by name in descending order with 5 employees per page
List<Employee> page2SortedDesc = employeeDao.getEmployeesByPageAndSort(2, 5, "DESC");

সারাংশ:

  • Pagination এর জন্য LIMIT এবং OFFSET ব্যবহার করা হয়, যা SQL কুয়েরির মাধ্যমে ডেটা নির্দিষ্ট পৃষ্ঠায় ভাগ করে আনে।
  • Sorting এর জন্য ORDER BY ব্যবহার করা হয়, যাতে ডেটা নির্দিষ্ট কলামের ভিত্তিতে ASCENDING বা DESCENDING অর্ডারে সাজানো যায়।
  • Pagination এবং Sorting একসাথে ব্যবহার করলে, আপনি একটি পৃষ্ঠা ভিত্তিক সাজানো ডেটা পেতে পারেন, যা ইউজার ইন্টারফেসে প্রদর্শনের জন্য উপযুক্ত।
Content added By
Promotion

Are you sure to start over?

Loading...