<dependency>
<!-- pageable -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
<!--JPA library -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
@Controller
package com.example.demo.cont;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.jpa.UserRepository;
@Controller
@RequestMapping("/user")
public class UserController
{
@Autowired
UserRepository rep; //mapper
@GetMapping("")
public String index() {
return "Spring boot MyBatis Test";
}
@GetMapping("/rep")
public String jpaTest(@PageableDefault(page=0, size=2) Pageable pageable, Model model)
{
Page<User> pageInfo = rep.findAll(pageable);
if(pageInfo.getNumber()-5 <1) {
model.addAttribute("start", 1);
}else {
model.addAttribute("start", pageInfo.getNumber()-5);
}
if(pageInfo.getTotalPages()< pageInfo.getNumber()+5) {
model.addAttribute("end", pageInfo.getTotalPages());
}else {
model.addAttribute("end", pageInfo.getNumber()+5);
}
model.addAttribute("page", pageInfo);
return "jpa_paging";
}
}
@Entity //(VO)
@Entity(name="user")
@Table(name="user")
public class User
{
@Id
private String uid;
private String pwd;
Repository 인터페이스 선언<Entity, PK자료형> //(mapper)
@Repository
public interface UserRepository extends JpaRepository<User, String>
{
Page<User> findAllByUid(String uid, Pageable pageable);
Page<User> findAll(Pageable pageable);
Page<User> findAllByPwd(String pwd, Pageable pageable);
}
VEIW
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JPA Pagination Examples</title>
</head>
<body>
<h3>Spring boot에서 JPA, Pageable을 이용한 페이지 나누기 예</h3>
<c:forEach var="user" items="${page.content}">
<div>${user.uid} ${user.phone} ${user.email} </div>
</c:forEach>
<hr>
<c:forEach var="i" begin="${start}" end="${end}">
<a href="/user/rep?page=${i-1}&size=2">${i}</a>
</c:forEach>
</body>
</html>
EL을 통해 사용 가능한 Page 속성들
last, first, totalElements, totalPages, size,
number, sort, numberOfElements, empty
JPA docs
https://docs.spring.io/spring-data/data-jpa/docs/1.4.x/reference/htmlsingle/
Spring Data JPA - Reference Documentation
MonetaryAmount amount = new MonetaryAmount(200.0, Currencies.DOLLAR); List customers = customerRepository.findAll( where(isLongTermCustomer()).or(hasSalesOfMoreThan(amount))); As you can see, Specifications offers some glue-code methods to chain and combin
docs.spring.io
'자바~하둡' 카테고리의 다른 글
python) List_CRUD (feat. jupyter notebook) (0) | 2022.02.21 |
---|---|
python) 마크다운, 자료형, 연산자, 형변환, 제어문, 모듈, 튜플, 예외처리,Sliceing (feat. jupyter notebook) (0) | 2022.02.20 |
맥에서 오라클클라우드(OIS) ssh 접속 (0) | 2022.02.10 |
오라클 클라우드 vm 설정 (0) | 2022.02.10 |
mybatis CRUD (0) | 2022.01.21 |