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

Type and hit Enter to search

  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / 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 yanıt yazın Cevabı iptal et

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

İlgini Çekebilir

Spring Boot Dersleri @ConditionalOnExpression Uygulama Ornegi

Spring Boot @ConditionalOnExpression Nedir? Uygulama Örneği

Spring Boot Dersleri Content Negotiation Uygulama Örneği

Spring Boot Content Negotiation XML – JSON Uygulama Örneği

Spring Boot Interceptor Nedir Kullanım Uygulama Örneği

Spring Boot Interceptor Nedir? Uygulama Örneği

Spring Data Redis Cache Kullanım Örneği

Spring Boot Data Redis Nedir? Distributed Cache 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
Struts
Spring Boot 3.0
Röportaj
Android
Spring Cloud Stream
Java 21
Redis
Debezium
XCode
Mikroservis Mimarisi
Spring Native
Video
Etkinlikler
PostgreSQL
JPA
iPhone Uygulama Geliştirme
Objective C
Spring Security
MongoDB
Spring Data
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
Spring Jdbc Template
RabbitMQ
PrimeFaces
JDBC
Manset
Google
Spring
Spring MVC
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Java SE
Tanıyalım
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
  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale