Pada artikel sebelumnya yang berada pada postingan yang berjudul Spring Data: Implementasi JPA dengan Hibernate pada Spring Boot, kita mencoba membuat Web API berbasis RESTFul sederhana yang melibatkan Spring Boot, JPA, Hibernate dan juga MySQL (atau MariaDB). Kini kita akan menambahkan fitur Pagination pada api http://localhost:8080/users, sehingga user pada awalnya akan selalu menuju halaman pertama secara default dan memilih kehalaman berapa selanjutnya.
Sebelumnya kita sudah memiliki endpoint yaitu /users untuk menerima POST (create) dan GET (retrieve). Kali ini kita akan menambahkan fitur pagination pada endoint GET /users untuk mendapakan list dari uses yang ada di database dengan kemampuan berpindah halaman dengan menentukan offset setiap halaman.
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public List<User> getAllUsers() {
return userRepository.findAll();
}
...
}
- Tambahkan parameter Pageable pada metode getAllUsers.
- Ubah return type dari List<User> menjadi Page<User>.
- Gunakan metode findAll(Pageable pageable) dari UserRepository.
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public Page<User> getAllUsers(Pageable pageable) {
return userRepository.findAll(pageable);
}
...
}
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(1, '1234567890', 'Garda Bangsa Sejati');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(2, '1234567890', 'Duriah Mutya Sahaja');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(3, '1234567890', 'Abdul Saleh Mapanta');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(4, '1234567890', 'Mahatta Maga Andi');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(5, '1234567890', 'Cellos Nigros Setyosa');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(6, '1234567890', 'Alena Supriadi Rahma');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(7, '1234567890', 'Nur Cahayo Ibadiah');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(8, '1234567890', 'Bimo Androswara Gempita');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(9, '1234567890', 'Bambang Bagus Chandra');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(10, '1234567890', 'Lutvi Rosyadi');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(11, '1234567890', 'Wawan Setiono');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(12, '1234567890', 'Guntur Setiono Langlangbuono');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(13, '1234567890', 'Gempita Cahya Ningsih');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(14, '1234567890', 'Melinda Abdurahman Saleh');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(15, '1234567890', 'Melinda Dulloh');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(16, '1234567890', 'Susilo Aji Satrio');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(17, '1234567890', 'Gorgia Supendi Rahmandanu');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(18, '1234567890', 'Budi Hartanto Suseno');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(19, '1234567890', 'Ronny Coleman LightWeight');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(20, '456789op', 'Rahmawati Nuraeni Magfiroh');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(21, 'passabc', 'Donny Kurnia Supeno');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(22, 'passabc', 'Andika Pratama');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(23, 'pass123', 'Yusuf Ibrahim');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(24, 'pass123', 'Ananda Baskoro Yudhoyono');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(25, 'pass123', 'Amelia Ayu Zahara');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(26, 'pass123', 'Nabila Syakieb');
INSERT INTO yboilerplate.`user`
(id, password, username)
VALUES(27, 'pass123', 'Nikita Willy Suprapto');
spring.application.name=YBoilerplate
spring.datasource.url=jdbc:mysql://localhost:3306/yboilerplate
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public Page<User> getAllUsers(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "size", defaultValue = "10") int size) {
Pageable pageable = PageRequest.of(page - 1, size);
return userRepository.findAll(pageable);
}
...
}
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public Page<User> getAllUsers(@PageableDefault(page = 0, size = 10) Pageable pageable) {
return userRepository.findAll(pageable);
}
...
}
Comments
Post a Comment