어떻게 자바 로 페이지 조 회 를 실현 합 니까?
내 가 현재 단계 의 페이지 조회 의 실현 은 sql 문 구 를 바탕 으로 하 는 것 이다.
select * from user where id limit a, b
해당 a 와 b 를 구성 하면 원 하 는 데 이 터 를 조회 하여 페이지 에 표시 할 수 있 습 니 다.중요 한 것 은 현재 페이지 수 를 구성 하려 면 자바 빈 을 패키지 하여 페이지 와 관련 된 기본 속성 을 저장 하 는 것 입 니 다.이렇게 하면 service 층 에서 원 하 는 페이지 수 를 계산 하고 기본 적 인 정 보 를 밀봉 하여 조회 해서 전단 에 표시 하면 됩 니 다.
2.구체 적 실현
1.자바 빈 정의
public @Data
class PageBean<T> implements Serializable {
private Integer page;//
private Integer limit;//
private Integer totalPage;//
private Integer total;//
private List<T> pageRecode;//
private List<Integer> pages;// , index 、
}
2.controller:
PageBean<QuestionDTO> pageBean = questionService.questionList(page);
Question DTO 형식의 자바 빈 을 되 돌려 줍 니 다.페이지 의 일부 정보 와 현재 페이지 에 표시 할 데이터 집합 을 포함 합 니 다.질문 DTO:
public @Data
class QuestionDTO {
private Integer id;
private String title;
private String description;
private Long gmtCreate;
private Long GmtModified;
private Integer creator;
private Integer attentionCount;
private Integer viewCount;
private Integer likeCount;
private String tag;
private User user;
}
3.호출 된 Service:
// index
public PageBean<QuestionDTO> questionList(Integer page) {
List<QuestionDTO> list = new ArrayList<>();
PageBean<QuestionDTO> pagesinfo = new PageBean<>();
//1. limit
Integer limit = 5;
pagesinfo.setLimit(limit);
//2.
Integer total = questionMapper.fingCount();
pagesinfo.setTotal(total);
//3.
Integer totalPage;
if(total % limit == 0){
totalPage = total / limit;
}else{
totalPage = total / limit + 1;
}
pagesinfo.setTotalPage(totalPage);
//4.
List<Integer> pages = new ArrayList<>();
for(int i=1;i<totalPage+1;i++){
pages.add(i);
}
pagesinfo.setPages(pages);
//5.
List<Question> questions = questionMapper.questionList(page,limit);
for(Question question : questions){
User user = userMapper.findById(question.getCreatar());
QuestionDTO questionDTO = new QuestionDTO();
BeanUtils.copyProperties(question,questionDTO);
questionDTO.setUser(user);
list.add(questionDTO);
}
pagesinfo.setPageRecode(list);
return pagesinfo;
}
service 층 에서 PageBean 의 속성 값 을 부여 하고 관련 데 이 터 를 조회 합 니 다.상기 코드 중 5 단계 에 의혹 이 있 으 면 여러 표 의 공동 조회 의 간단 하고 다른 실현 방식 을 참조 하 시기 바 랍 니 다.4.mapper
// index
@Select("select * from question where id limit #{page},#{limit}")
List<Question> questionList(Integer page, Integer limit);
//
@Select("select count(id) from question")
Integer fingCount();
이 를 마치 면 controller 에 있 는 PageBean 에 조회 한 데이터 가 봉 인 됩 니 다.전단 으로 돌아 가면 완 료 됩 니 다.5.전단 코드
<!-- -->
<nav aria-label="Page navigation" th:align="right">
<ul class="pagination">
<li th:if="${pageBean.totalPage>5 || pageBean.totalPage==1}">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<li th:each="page:${pageBean.pages}"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" th:text="${page}"></a></li>
<li>
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" aria-label="Next" th:if="${pageBean.totalPage>5}">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
페이지 를 반복 해서 꺼 냅 니 다.다른 방식 으로 my batis-generator 에서 생 성 된 페이지 조회 방법 을 사용 합 니 다.
1.새 generator Config.xml 프로필'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- -->
<plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"></plugin>
<!-- -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&serverTimezone=UTC"
userId="root"
password="root">
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--
targetPackage:
targetProject: ( java)
-->
<javaModelGenerator targetPackage="cn.fzkj.community.domain" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- xml -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- mapper -->
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.fzkj.community.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- , -->
<table tableName="question" domainObjectName="Question" ></table>
<table tableName="user" domainObjectName="User" ></table>
<table tableName="comment" domainObjectName="Comment" ></table>
<table tableName="notification" domainObjectName="Notification" ></table>
</context>
</generatorConfiguration>
주:1.설정 파일 의 이름 은 generator Config.xml 로 고정 되 어 있 습 니 다.
2.콘 솔 에서 명령 뮤 직 비디오 를 실행 합 니 다.
주:overwrite=true 는 이전에 생 성 된 코드 를 덮어 쓰 고 실제 수요 에 따라 조정 할 수 있 습 니 다.
3.예 를 들 면:
QuestionExample example = new QuestionExample();
example.createCriteria().
andCreatorEqualTo(id);
List<Question> questions = questionMapper.selectByExampleWithRowbounds(example, new RowBounds(page,limit));
페이지 수 와 페이지 마다 표 시 된 개 수 를 설정 하면 해당 하 는 결과 집합 을 되 돌려 줍 니 다.페이지 를 나 눌 수도 있다.계속 업데이트~~~
이상 은 자바 로 페이지 조 회 를 어떻게 실현 하 는 지 에 대한 상세 한 내용 입 니 다.자바 로 페이지 조 회 를 실현 하 는 데 관 한 자 료 는 우리 의 다른 관련 글 에 관심 을 가 져 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.