Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Quarkus Dersleri
  • Spring Dersleri
    • Spring Cloud
    • Spring Boot
    • Spring Uygulama Örnekleri
    • Spring Core
    • Spring JDBC Template
    • Spring MVC
  • İleri Java Dersleri
    • Java Server Faces
    • Java Server Pages
    • PrimeFaces
    • Servlet
    • JDBC
    • JSTL
    • Java 8
  • Hibernate Dersleri
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
  • Hakkımda
Spring Boot

Spring Boot Dersleri Pagination Uygulama İşlemleri

Paylaş

Spring Boot Dersleri‘ne devam ediyorum.

Bu yazıda Spring Boot projemizde rest api servisimizdeki pagination yani verileri clienta gönderirken sayfalama işlemini örnek bir uygulama örneği yaparak anlamaya çalışacağız.

Yapacağım örnekte iller ve nüfüsların bulunduğu bir veritabanımız olacak ve bu kayıtlar içerisinden sayfalama işlemlerinin kullanacağımız Spring Boot projesi yapacağız.

Maven bağımlılığımız aşağıdaki gibidir. Bu bağımlılığımızda veritabanı olarakda H2 gömülü veritabanı kullanacağım.

<dependency>
 <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
  <scope>runtime</scope>
</dependency>

İller ve nüfüs bilgilerinin olduğu ve veritabanı ayağa kalktığında bu sabir verilerin yüklenebilmesi için resources klasörünün altında import.sql dosyası oluşturup verimizi Sql cümlecikleri ile ekleyelim.

INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (1, 'Adana', 2201670);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (2, 'Adıyaman', 610484);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (3, 'Afyonkarahisar', 714523);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (4, 'Ağrı', 542255);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (5, 'Amasya', 326351);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (6, 'Ankara', 5346518);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (7, 'Antalya', 2328555);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (8, 'Artvin', 168068);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (9, 'Aydın', 1068260);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (10,'Balıkesir', 1196176);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (11,'Bilecik', 218297);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (12,'Bingöl', 269560);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (13,'Bitlis', 341225);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (14,'Bolu', 299896);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (15,'Burdur', 261401);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (16,'Bursa', 2901396);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (17,'Çanakkale', 519793);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (18,'Çankırı', 183880);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (19,'Çorum', 527863);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (20,'Denizli', 1005687);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (21,'Diyarbakır', 1673119);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (22,'Edirne', 401701);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (23,'Elazığ', 578789);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (24,'Erzincan', 226032);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (25,'Erzurum', 762021);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (26,'Eskişehir', 844842);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (27,'Gaziantep', 1974244);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (28,'Giresun', 444467);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (29,'Gümüşhane', 172034);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (30,'Hakkari', 267813);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (31,'Hatay', 1555165);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (32,'Isparta', 427324);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (33,'Mersin', 1773852);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (34,'İstanbul', 14804116);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (35,'İzmir', 4223545);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (36,'Kars', 289786);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (37,'Kastamonu', 376945);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (38,'Kayseri', 1358980);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (39,'Kırklareli', 351684);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (40,'Kırşehir', 229975);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (41,'Kocaeli', 1830772);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (42,'Konya', 2161303);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (43,'Kütahya', 573642);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (44,'Malatya', 781305);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (45,'Manisa', 1396945);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (46,'Kahramanmaraş', 1112634);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (47,'Mardin', 796237);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (48,'Muğla', 923773);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (49,'Muş', 406501);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (50,'Nevşehir', 290895);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (51,'Niğde', 351468);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (52,'Ordu', 750588);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (53,'Rize', 331048);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (54,'Sakarya', 976948);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (55,'Samsun', 1295927);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (56,'Siirt', 322664);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (57,'Sinop', 205478);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (58,'Sivas', 621224);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (59,'Tekirdağ', 972875);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (60,'Tokat', 602662);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (61,'Trabzon', 779379);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (62,'Tunceli', 82193);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (63,'Şanlıurfa', 1940627);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (64,'Uşak', 358736);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (65,'Van', 1100190);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (66,'Yozgat', 421041);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (67,'Zonguldak', 597524);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (68,'Aksaray', 396673);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (69,'Bayburt', 90154);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (70,'Karaman', 245610);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (71,'Kırıkkale', 277984);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (72,'Batman', 576899);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (73,'Şırnak', 483788);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (74,'Bartın', 192389);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (75,'Ardahan', 98335);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (76,'Iğdır', 192785);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (77,'Yalova', 241665);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (78,'Karabük', 242347);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (79,'Kilis', 130825);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (80,'Osmaniye', 522175);
INSERT Sehirler (Plaka,  Ad, Nufus) VALUES (81,'Düzce', 370371);

Verilerimizin entity sınıfını oluşturalım.

@Entity
@Table
public class Sehirler {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private int plaka;
    private String ad;
    private int nufus;

    public Sehirler() {
    }

    public Sehirler(Long id, int plaka, String ad, int nufus) {
        this.id = id;
        this.plaka = plaka;
        this.ad = ad;
        this.nufus = nufus;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getPlaka() {
        return plaka;
    }

    public void setPlaka(int plaka) {
        this.plaka = plaka;
    }

    public String getAd() {
        return ad;
    }

    public void setAd(String ad) {
        this.ad = ad;
    }

    public int getNufus() {
        return nufus;
    }

    public void setNufus(int nufus) {
        this.nufus = nufus;
    }
}

Repositorymizi oluşturalım bu sınıfımızda PagingAndSortingRepository extend ederek verilerin pagination işlemi için kullanılabilecek bir yapıda olduğunu söylemiş oluyoruz.

@Repository
public interface  SehirlerRepository extends PagingAndSortingRepository<Sehirler, Long> {

}

Verileri getirecek servis katmanımızın arayüz interface kısmını oluşturalım. Bu interface’de veritabanımıza ulaşacak olan metot tanımlamalarımızı yapıyoruz.

public interface ISehirlerService {
    List<Sehirler> getSehirlerList(int no, int size);
}

Bu metotta no ve size parametrelerini alıyoruz.

  • no değeri sayfa sayısı,
  • size ise o sayfada bulunan kayıt sayısını ifade etmektedir.

Servis katmanımızı oluşturalım ve arayüzümü de bu sınıfa implement edeceğiz.

@Service
public class SehirlerService implements ISehirlerService{
    
    @Autowired
    private SehirlerRepository sehirlerRepository;

    @Override
    public List<Sehirler> getSehirlerList(int no, int size) {
        Pageable pageable = PageRequest.of(no, size);
        Page<Sehirler> sehirlerPage = sehirlerRepository.findAll(pageable);

        return sehirlerPage.toList();
    }
}

Bu sınıf içerisindeki metodumuzda gelecek verinin hangi sayfa sayısından kaç adet veri geleceğini yani pagination işleminin yapıldığı yer. Hangi sayfadan kaç adet veri geleceğini tabiki biz rest api endpointimizden göndereceğiz.

Bunun için Pageable sınıfının içerisinden PageRequest isteği oluşturuyoruz ve ardından bu pagination istediğini data jpa tarafından desteklenen repositorymizdeki findAll metdouna gönderiyoruz.

Bu metod bizim isteğimizi yerine getirirken pagination isteğimizi de ekleyerek ona göre bize verileri getiriyor.

Controllerimizi bu contorllerimiz rest controller olacak. Bu sınıfta ise restfull endpointimizi oluşturalım.

@RestController
public class SehirlerController {

    @Autowired
    private ISehirlerService iSehirlerService;

    @GetMapping("/sehir/{no}/{size}")
    public List<Sehirler> getSehirler(@PathVariable int no,
                                      @PathVariable int size) {

        return iSehirlerService.getSehirlerList(no, size);
    }
}

Ve şimdi Postman’den test edelim.

`localhost:8080/sehir/10/4` isteği gönderdiğimizde gelen cevap aşağıdaki gibi olacaktır.

[
    {
        "id": 41,
        "plaka": 41,
        "ad": "Kocaeli",
        "nufus": 1830772
    },
    {
        "id": 42,
        "plaka": 42,
        "ad": "Konya",
        "nufus": 2161303
    },
    {
        "id": 43,
        "plaka": 43,
        "ad": "Kütahya",
        "nufus": 573642
    },
    {
        "id": 44,
        "plaka": 44,
        "ad": "Malatya",
        "nufus": 781305
    }
]

Projenin Kaynak Kodlarına Ulaş
Önceki Ders: Spring Logging Uygulama Örneği
Spring Boot Dersleri
Sonraki Ders: Github kullanarak Heroku’ya Deploy Etmek

Tags:

spring boot dersleriSpring Boot Uygulama Örneğispring derslerispring pagination örnek

Paylaş

Diğer Yazılar

Spring Boot Logging Uygulama Örneği
Previous

Spring Boot Dersleri Spring Logging Uygulama Örneği

Spring Boot Uygulama Örneği Github HerokuDeploy
Next

Spring Boot Uygulamasını Github kullanarak Heroku’ya Deploy Etmek

Next
Spring Boot Uygulama Örneği Github HerokuDeploy
08 Kasım 2020

Spring Boot Uygulamasını Github kullanarak Heroku’ya Deploy Etmek

Previews
07 Kasım 2020

Spring Boot Dersleri Spring Logging Uygulama Örneği

Spring Boot Logging Uygulama Örneği

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Boot Dersleri Rest Template

Spring Boot RestTemplate Nedir ve Kullanımı

blank

Spring Boot Transaction, Isolation, Propagation ve RollBack

blank

Spring Boot Projelerinde Jackson Kullanımı

blank

Spring Boot Bean Validation Uygulama Örneği

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Röportaj
Struts
Android
Vue.js
Node.js
Redis
XCode
Spring Data
Debezium
Mikroservis Mimarisi
Spring Native
Video
Spring Security
Objective C
iPhone Uygulama Geliştirme
JPA
DevOps
PostgreSQL
Apache Kafka
Git
Design Patterns
Yaptığım Projeler
Servlet
Maven
Spring Cloud
Linux
Spring
JDBC
PrimeFaces
Spring Jdbc Template
RabbitMQ
Google
Manset
Spring MVC
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github