最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何用java實現(xiàn)分頁查詢

 更新時間:2020年06月11日 11:07:05   作者:''買條秋褲穿  
這篇文章主要介紹了如何用java實現(xiàn)分頁查詢,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

1.基本思路

我現(xiàn)階段的分頁查詢的實現(xiàn)是基于sql語句的。

select * from user where id limit a, b

構(gòu)造出相應(yīng)的a和b就可以查詢出想要的數(shù)據(jù),在顯示在頁面上。重點是要構(gòu)造出當(dāng)前的頁數(shù),就要封裝一個javaBean,存儲有關(guān)分頁的基本屬性。

這樣只需在service層計算想要的頁數(shù),并封裝基本的信息,在查詢出來顯示在前端就可以了。

2.具體實現(xiàn)

1.定義JavaBean

public @Data
class PageBean<T> implements Serializable {
  private Integer page;//當(dāng)前頁數(shù)
  private Integer limit;//每頁顯示數(shù)
  private Integer totalPage;//總頁數(shù)
  private Integer total;//總記錄數(shù)
  private List<T> pageRecode;//當(dāng)前頁面的數(shù)據(jù)集合
  private List<Integer> pages;//返回頁數(shù)的集合,用于顯示index頁面的上一頁、下一頁
}

2.controller:

PageBean<QuestionDTO> pageBean = questionService.questionList(page);

返回一個QuestionDTO類型的JavaBean,其中包含了分頁的一些信息和當(dāng)前頁面所要顯示的數(shù)據(jù)集合。有關(guān)QuestionDTO:

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.調(diào)用的Service:

   //查詢所有的問題回顯到index頁面
  public PageBean<QuestionDTO> questionList(Integer page) {
    List<QuestionDTO> list = new ArrayList<>();
    PageBean<QuestionDTO> pagesinfo = new PageBean<>();
    //1.設(shè)置limit
    Integer limit = 5;
    pagesinfo.setLimit(limit);
    //2.設(shè)置總記錄數(shù)
    Integer total = questionMapper.fingCount();
    pagesinfo.setTotal(total);
    //3.設(shè)置總的頁數(shù)
    Integer totalPage;
    if(total % limit == 0){
      totalPage = total / limit;
    }else{
      totalPage = total / limit + 1;
    }
    pagesinfo.setTotalPage(totalPage);
    //4.設(shè)置頁數(shù)的集合
    List<Integer> pages = new ArrayList<>();
    for(int i=1;i<totalPage+1;i++){
      pages.add(i);
    }
    pagesinfo.setPages(pages);
    //5.設(shè)置每頁的數(shù)據(jù)集合
    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的屬性賦值,并且查詢出相關(guān)的數(shù)據(jù)。上述代碼中第5步如果有疑惑請參照多表聯(lián)合查詢的簡單另類的實現(xiàn)方式。

4.mapper

  //查詢所有的問題并回顯到index頁面
  @Select("select * from question where id limit #{page},#{limit}")
  List<Question> questionList(Integer page, Integer limit);

  //查詢總的問題數(shù)
  @Select("select count(id) from question")
  Integer fingCount();

做完這些,controller中的PageBean中就會封裝有查詢的數(shù)據(jù)。在返回前端顯示就完成了。

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>

循環(huán)取出page。

另一種方式,使用mybatis-generator生成的分頁查詢方法

1.新建generatorConfig.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>

    <!-- 連接數(shù)據(jù)庫的基本信息 -->
    <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:項目地址(到j(luò)ava)
    -->
    <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.配置文件的名稱固定是generatorConfig.xml

2.在控制臺運行命令mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate生成帶有分頁查詢方法的代碼

注:overwrite=true會覆蓋掉前一次生成的代碼,可根據(jù)實際需求進行調(diào)整。

3.舉例:

    QuestionExample example = new QuestionExample();
    example.createCriteria().
        andCreatorEqualTo(id);
    List<Question> questions = questionMapper.selectByExampleWithRowbounds(example, new RowBounds(page,limit));

設(shè)置好頁數(shù)和每一頁顯示的個數(shù),就可以返回對應(yīng)的結(jié)果集。也同樣可以做到分頁。

持續(xù)更新~~~

以上就是如何用java實現(xiàn)分頁查詢的詳細內(nèi)容,更多關(guān)于java實現(xiàn)分頁查詢的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java詞法分析器DDL遞歸應(yīng)用詳解

    java詞法分析器DDL遞歸應(yīng)用詳解

    這篇文章主要介紹了java詞法分析器DDL遞歸應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Java8新特性之泛型的目標(biāo)類型推斷_動力節(jié)點Java學(xué)院整理

    Java8新特性之泛型的目標(biāo)類型推斷_動力節(jié)點Java學(xué)院整理

    泛型是Java SE 1.5的新特性,泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個參數(shù)。下面通過本文給分享Java8新特性之泛型的目標(biāo)類型推斷,感興趣的朋友參考下吧
    2017-06-06
  • 通過簡單方法實現(xiàn)spring boot web項目

    通過簡單方法實現(xiàn)spring boot web項目

    這篇文章主要介紹了通過簡單方法實現(xiàn)spring boot web項目,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 基于SpringBoot實現(xiàn)IP黑白名單的詳細步驟

    基于SpringBoot實現(xiàn)IP黑白名單的詳細步驟

    IP黑白名單是網(wǎng)絡(luò)安全管理中常見的策略工具,用于控制網(wǎng)絡(luò)訪問權(quán)限,根據(jù)業(yè)務(wù)場景的不同,其應(yīng)用范圍廣泛,比如比較容易被盜刷的短信接口、文件接口,都需要添加IP黑白名單加以限制,所以本文給大家介紹了基于SpringBoot實現(xiàn)IP黑白名單的詳細步驟,需要的朋友可以參考下
    2024-01-01
  • 新手了解java 反射基礎(chǔ)知識

    新手了解java 反射基礎(chǔ)知識

    這篇文章主要介紹了Java反射機制的相關(guān)內(nèi)容,涉及了class類的動態(tài)加載,獲取成員變量、構(gòu)造函數(shù)信息等信息,需要的朋友可以參考下,希望對你有所幫助
    2021-07-07
  • 基于Java實現(xiàn)五子棋小游戲(附源碼)

    基于Java實現(xiàn)五子棋小游戲(附源碼)

    這篇文章主要為大家介紹了如何通過Java實現(xiàn)簡單的五子棋游戲,文中的示例代碼講解詳細,對我們學(xué)習(xí)Java游戲開發(fā)有一定幫助,需要的可以參考一下
    2022-11-11
  • java中volatile關(guān)鍵字的作用與實例代碼

    java中volatile關(guān)鍵字的作用與實例代碼

    這篇文章主要給大家介紹了關(guān)于java中volatile關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Ribbon負載均衡服務(wù)調(diào)用的示例詳解

    Ribbon負載均衡服務(wù)調(diào)用的示例詳解

    Rbbo其實就是一個軟負載均衡的客戶端組件,他可以和其他所需請求的客戶端結(jié)合使用,這篇文章主要介紹了Ribbon負載均衡服務(wù)調(diào)用案例代碼,需要的朋友可以參考下
    2023-01-01
  • Java多線程之volatile關(guān)鍵字及內(nèi)存屏障實例解析

    Java多線程之volatile關(guān)鍵字及內(nèi)存屏障實例解析

    volatile是JVM提供的一種最輕量級的同步機制,因為Java內(nèi)存模型為volatile定義特殊的訪問規(guī)則,使其可以實現(xiàn)Java內(nèi)存模型中的兩大特性:可見性和有序性。這篇文章主要介紹了Java多線程之volatile關(guān)鍵字及內(nèi)存屏障,需要的朋友可以參考下
    2019-05-05
  • SpringBoot啟動流程入口參數(shù)創(chuàng)建對象源碼分析

    SpringBoot啟動流程入口參數(shù)創(chuàng)建對象源碼分析

    這篇文章主要為大家介紹了SpringBoot啟動流程入口參數(shù)研究及創(chuàng)建對象源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04

最新評論

南漳县| 宣恩县| 泰安市| 理塘县| 桦川县| 霍林郭勒市| 洪雅县| 铜川市| 钟山县| 汶川县| 峨眉山市| 轮台县| 清水县| 广西| 渭源县| 新源县| 泉州市| 唐河县| 武鸣县| 乃东县| 上犹县| 沙田区| 合川市| 新巴尔虎右旗| 东源县| 日照市| 盘山县| 格尔木市| 班戈县| 德格县| 伊春市| 兴仁县| 盐边县| 临夏市| 密云县| 镇平县| 丹寨县| 瑞丽市| 海原县| 宁海县| 河南省|