어떻게 자바 로 페이지 조 회 를 실현 합 니까?

1.기본 적 인 사고방식
내 가 현재 단계 의 페이지 조회 의 실현 은 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">&laquo;</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">&raquo;</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&amp;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));
페이지 수 와 페이지 마다 표 시 된 개 수 를 설정 하면 해당 하 는 결과 집합 을 되 돌려 줍 니 다.페이지 를 나 눌 수도 있다.
계속 업데이트~~~
이상 은 자바 로 페이지 조 회 를 어떻게 실현 하 는 지 에 대한 상세 한 내용 입 니 다.자바 로 페이지 조 회 를 실현 하 는 데 관 한 자 료 는 우리 의 다른 관련 글 에 관심 을 가 져 주 십시오!

좋은 웹페이지 즐겨찾기