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

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
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>
Code language: HTML, XML (xml)

İ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);
Code language: JavaScript (javascript)

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; } }
Code language: JavaScript (javascript)

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> { }
Code language: PHP (php)

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); }
Code language: PHP (php)

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(); } }
Code language: PHP (php)

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); } }
Code language: PHP (php)

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 } ]
Code language: JSON / JSON with Comments (json)

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

Spring Boot Projelerinde Tomcat Yerine Jetty Kullanmak

Spring Boot Dersleri Rest Template

Spring Boot RestTemplate Nedir ve Kullanımı

Spring Boot Dersleri

Spring Boot Transaction, Isolation, Propagation ve RollBack

Spring Boot Dersleri

Spring Boot Projelerinde Jackson Kullanımı

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

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

Link

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

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
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
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale