A, pom.xml 파일 구성 파일
<의존성> <의 groupId> org.springframework.boot </의 groupId> <artifactId를> 스프링 부팅 스타터 데이터 JPA </ artifactId를> </ 의존성> <의존성> <의 groupId> org.springframework.boot </의 groupId> <artifactId를> 스프링 부팅 스타터 thymeleaf </ artifactId를> </ 의존성> <의존성> <의 groupId> org.springframework.boot </의 groupId> <artifactId를> 스프링 부팅 스타터 웹 </ artifactId를> </ 종속 > <의존성> <의 groupId> org.springframework.boot </의 groupId> <artifactId를> 스프링 부팅 DevTools로 </ artifactId를> <분야> 런타임 </ 범위> </ 의존성> <의존성> <의 groupId> MySQL의 </의 groupId> <artifactId를> MySQL을 커넥터 자바 </ artifactId를> <분야> 런타임 </ 범위> </ 의존성>
둘째, 관련 코드
엔티티 :
@Entity @Table (이름 = "사용자 정보") 공용 클래스 사용자 정보가 직렬화 {구현 @Id @GeneratedValue 개인 긴 사용자 ID를; 개인 문자열 이름; 개인 문자열 비밀 번호; 개인 INT 연령, 省略게터 및 세터 }
DAO : 만 JpaRepository을 상속 할 필요가, 당신이 PagingAndSortingRepository 더 많은 기능을 상속 할 수 있습니다 곳은 가장 간단한 데모
공용 인터페이스의 UserInfoDao는 JpaRepository <사용자 정보, 롱>, 직렬화를 {확장 }
서비스:
공중 인터페이스 UserInfoService { //分页查询 페이지 <사용자 정보> findByPage (페이징 가능한 페이징); }
ServiceImpl에서는 :
@Service @Transactional Public 클래스 UserInfoServiceImpl는 UserInfoService가 구현 { @Override 공개 페이지 <사용자 정보> findByPage (페이징 가능한 페이징) { userInfoDao.findAll (페이징)을 반환; } }
제어 장치:
페이징 할 수있는 여러 가지 방법을 정의하지만, 정보의 핵심은 두 가지입니다 : 첫째, 정보 (페이지 크기 (제한)) 페이징, 두 번째는 정보의 일종이다. 스프링 데이터 JPA PageRequest의 구체적인 구현은 스프링 MVC는 우리가 단지 매김하고 주문 정보를 제공, 스프링 데이터 JPA에 대한 아주 좋은 지원을 제공합니다 :
//分页 @RequestMapping ( "/리스트") 공중 문자열 pageUser (@RequestParam (값 = "시작"DEFAULTVALUE가 = "0") 정수 시작 @RequestParam (값 = "제한"DEFAULTVALUE은 = "10") 정수 한도 , 모델 모델) { <0을 시작 = 시작? 0 : 시작; 정렬 종류 = 새로운 정렬 (Sort.DEFAULT_DIRECTION, "용자 ID"); Pageable를 페이징 (일종의 시작 제한) = 새로운 PageRequest; 페이지 <사용자 정보> = userInfoService.findByPage 페이지 (페이징 가능); model.addAttribute ( "페이지"페이지) 반환 "사용자 / 사용자 목록"; } //分页JSON @RequestMapping ( "/ pagejson") @ResponseBody 공개 페이지 <사용자 정보> pageUser (@PageableDefault (값 = 15, 정렬 = "용자 ID"방향 = Sort.Direction.ASC) 페이징 페이징 가능한) { userInfoService.findByPage (페이징)을 반환; }
셋째, 객체와 JSON을 반환
쉽게 볼 수 객체에 대한 JSON 형식을 반환 페이징 :
{ "내용": [ { 1, "용자 ID" "이름": "사사" , "E": "비밀번호" "나이": 123 }, { "용자 ID": 11, "사용자 이름": "问问", "비밀번호 ":"w ", "나이 ": (121) } ], "페이징 ": { "종류 ": { " "진정한 분류 "분류되지 않은 : "거짓 " "빈 : 거짓 } "오프셋"0 "pageSize가"15 "PAGENUMBER"0 "페이징"사실, "unpaged"거짓 } "totalElements": 16, "totalPages": 2, "마지막"거짓, "번호": 0, "크기": 15, "종류": { "분류"사실, "분류되지 않은"거짓, "빈" : 거짓 }, "numberOfElements": 15, "최초의"진정한 "빈"거짓 }
JSON은 Pageable를의 상관 특성을 보여주고, 직접 사용할 수있는,
여기 사용 thymeleaf 템플릿, 그래서 전에 생략 도입 한 후, 다음과 같이 템플릿, 핵심 디스플레이 데이터를 렌더링하는 최초의 컨트롤러를 사용하고 있습니다.
<표 클래스 = "테이블 테이블 호버"> <THEAD> <TR> <일> ID </ 일> 이름 <일> </ 일> <일> 비밀번호 </ 일> <일> 세 </ 일> < 일> 세부 </ 일> <제>操作</ 일> </ TR> </ THEAD> <TBODY> <TR 번째 각 = "사용자 $ {} page.content"> <범위 = "로우"일 : 제 텍스트 = "$ {user.getUserid ()}"> 2 </ 일> <번째 : 제 텍스트 = "$ {user.getUsername ()}"> 레오 </ 일> <번째 : 제 텍스트 = "$ {user.getPassword ()} "> PWD </> 제 <제 번째 : </ TR>텍스트 = "$ {user.getAge는 ()}"> (13)는 </ TH는> <TH> <A th:href="@{/user/findById(id=${user.getUserid()})}">보기 </A> </ 일> <! - 코드는 삭제 될 수 있습니다, 표시되지 않습니다 구현하거나 구현한다 -> <일> <a th:href="@{/user/deleteById(id=${user.getUserid()})}">删除</A> </ 일> <! -代码中未给出实现,可删除或自己实现-> </ TBODY> </ 테이블> <UL 클래스 = "목록 그룹"> <LI 클래스 = "목록 그룹 항목"> 일 <클래스 = "BTN 기본"HREF = "@ {/ 사용자 / 목록 (시작 = 0)} "> [首页] </a>에 <클래스 =" ": 제 경우 ="BTN 기본 $ {되지 page.isFirst ()} ": 제 HREF ="@ {/ 사용자 /리스트 (시작 = $ {page.number-1})} "> [上页] </a>에 <클래스 =" ": 제 경우 ="BTN 기본 $ {되지 page.isLast ()} ": 제 HREF = "@ {/ 사용자 /리스트 (시작 = $ {page.number + 1})}"> [下页] </a>를 <번째 클래스 = "BTN 기본"HREF = "@ {/ 사용자 / 목록} "> [末页] </A> (= $ {1} page.totalPages 시작) </ 리> </ UL>
다른 넷째, 참조
: 또 다른 기사를 참조 할 수 https://www.tianmaying.com/tutorial/spring-jpa-page-sort (스프링 MVC와 스프링 데이터 JPA 통합 : 페이징 및 정렬)
등 PagingAndSortingRepository, Pageable를 객체의 세부 사항,하지만 단지 JSON 데이터를 반환하지만 빠른 프런트 엔드를 달성하기 위해, Thymeleaf 반환 객체를 사용하고 해결.