欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于SpringBoot和Vue3的博客平臺文章列表與分頁功能實現(xiàn)

 更新時間:2023年04月11日 09:39:41   作者:SYBH.  
在前面的教程中,我們已經(jīng)實現(xiàn)了基于Spring Boot和Vue3的發(fā)布、編輯、刪除文章功能。本教程將繼續(xù)引導(dǎo)您實現(xiàn)博客平臺的文章列表與分頁功能,需要的朋友可以參考閱讀

在前面的教程中,我們已經(jīng)實現(xiàn)了基于Spring Boot和Vue3的發(fā)布、編輯、刪除文章功能。本教程將繼續(xù)引導(dǎo)您實現(xiàn)博客平臺的文章列表與分頁功能。

在本教程中,我們實現(xiàn)了基于Spring Boot和Vue3的博客平臺文章列表與分頁功能。整個實現(xiàn)過程可以分為以下幾個步驟:

  1. 后端Spring Boot實現(xiàn) 1.1. 修改ArticleMapper接口:添加新的findPage方法以支持分頁查詢。 1.2. 修改ArticleService接口及實現(xiàn):替換findAll方法為findPage方法,并實現(xiàn)分頁查詢邏輯。 1.3. 修改ArticleController類:更新list方法,接收分頁參數(shù),并調(diào)用findPage方法獲取分頁數(shù)據(jù)。
  2. 前端Vue3實現(xiàn) 2.1. 修改文章列表頁面組件:在ArticleList.vue組件中,修改fetchArticles方法,接收分頁參數(shù),并將數(shù)據(jù)顯示在表格中。 2.2. 添加分頁組件:在文章列表頁面中,添加<el-pagination>組件以實現(xiàn)分頁功能。當用戶更改分頁大小或當前頁時,分別觸發(fā)handleSizeChange和handleCurrentChange方法,重新獲取文章列表數(shù)據(jù)。

在這個過程中,我們首先修改了后端Spring Boot應(yīng)用程序,為ArticleMapper接口添加了支持分頁查詢的方法,并相應(yīng)地修改了ArticleService和ArticleController類。然后,我們修改了前端Vue3應(yīng)用程序,實現(xiàn)了根據(jù)分頁參數(shù)獲取文章列表數(shù)據(jù)的功能,并添加了一個分頁組件以方便用戶進行翻頁操作。

通過這種方式,我們實現(xiàn)了博客平臺的文章列表與分頁功能,使得用戶可以更方便地查看大量文章。您可以根據(jù)實際需求對這些功能進行進一步的優(yōu)化和擴展。

1. 后端Spring Boot實現(xiàn)

我們將使用Spring Boot作為后端框架,并使用MySQL作為數(shù)據(jù)庫。

1.1 修改ArticleMapper接口

為了支持分頁功能,我們需要修改ArticleMapper.java文件,添加一個新方法findPage,同時更新findAll方法為findPage方法。

@Mapper
public interface ArticleMapper {
    List<Article> findPage(@Param("offset") int offset, @Param("pageSize") int pageSize);
    Article findById(Integer id);
    void insert(Article article);
    void update(Article article);
    void delete(Integer id);
    int count();
}

1.2 修改ArticleService接口及實現(xiàn)

ArticleService.java文件中,將findAll方法替換為findPage方法,同時添加一個新方法count。

public interface ArticleService {
    List<Article> findPage(int offset, int pageSize);
    Article findById(Integer id);
    void create(Article article);
    void update(Article article);
    void delete(Integer id);
    int count();
}

接著,在ArticleServiceImpl.java文件中,修改對應(yīng)的實現(xiàn)。

@Service
public class ArticleServiceImpl implements ArticleService {
    @Autowired
    private ArticleMapper articleMapper;
 
    @Override
    public List<Article> findPage(int offset, int pageSize) {
        return articleMapper.findPage(offset, pageSize);
    }
 
    // ...其他方法不變
}

1.3 修改ArticleController類

ArticleController.java文件中,修改list方法,接收pagepageSize參數(shù),并調(diào)用findPagecount方法獲取分頁數(shù)據(jù)。

@RestController
@RequestMapping("/api/article")
public class ArticleController {
    @Autowired
    private ArticleService articleService;
 
    @GetMapping
    public Result list(@RequestParam(required = false, defaultValue = "1") int page,
                       @RequestParam(required = false, defaultValue = "10") int pageSize) {
        int offset = (page - 1) * pageSize;
        List<Article> articles = articleService.findPage(offset, pageSize);
        int totalCount = articleService.count();
        return Result.success("獲取文章列表成功", new PageData<>(articles, totalCount, pageSize, page));
    }
 
    // ...其他方法不變
}

2. 前端Vue3實現(xiàn)

2.1 修改文章列表頁面組件

ArticleList.vue組件中,修改fetchArticles方法,接收pagepageSize參數(shù),并將數(shù)據(jù)顯示在表格中。同時,添加<el-pagination>組件實現(xiàn)分頁。

<template>
  <div>
    <el-table :data="articles">
      <el-table-column prop="id" label="ID" width="80"></el-table-column>
      <el-table-column prop="title" label="標題"></el-table-column>
      <el-table-column label="操作" width="180">
        <template v-slot="{ row }">
          <el-button @click="editArticle(row.id)">編輯</el-button>
          <el-button type="danger" @click="deleteArticle(row.id)">刪除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="page"
      :page-sizes="[10, 20, 30, 40]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total">
    </el-pagination>
  </div>
</template>
 
<script>
import { ref } from "vue";
import axios from "axios";
 
export default {
  setup() {
    const articles = ref([]);
    const total = ref(0);
    const page = ref(1);
    const pageSize = ref(10);
 
    const fetchArticles = async (page, pageSize) => {
      const response = await axios.get("/api/article", {
        params: {
          page: page,
          pageSize: pageSize
        }
      });
      articles.value = response.data.data.list;
      total.value = response.data.data.total;
    };
 
    const handleSizeChange = (val) => {
      pageSize.value = val;
      fetchArticles(page.value, pageSize.value);
    };
 
    const handleCurrentChange = (val) => {
      page.value = val;
      fetchArticles(page.value, pageSize.value);
    };
 
    const editArticle = (id) => {
      // 跳轉(zhuǎn)到編輯頁面
    };
 
    const deleteArticle = async (id) => {
      await axios.delete(`/api/article/${id}`);
      fetchArticles(page.value, pageSize.value);
    };
 
    fetchArticles(page.value, pageSize.value);
 
    return { articles, total, page, pageSize, handleSizeChange, handleCurrentChange, editArticle, deleteArticle };
  },
};
</script>

在這個修改后的ArticleList.vue組件中,我們添加了<el-pagination>組件以實現(xiàn)分頁功能。當用戶更改分頁大小或當前頁時,分別觸發(fā)handleSizeChange和handleCurrentChange方法。這兩個方法都會調(diào)用fetchArticles方法,根據(jù)當前頁和分頁大小重新獲取文章列表數(shù)據(jù)。

至此,您已經(jīng)完成了基于Spring Boot和Vue3的文章列表與分頁功能實現(xiàn)。在實際項目中,您可能需要根據(jù)需求進行更多的優(yōu)化和擴展。希望本教程對您有所幫助!

到此這篇關(guān)于基于SpringBoot和Vue3的博客平臺文章列表與分頁功能實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Vue3實現(xiàn)文章列表與分頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java八大經(jīng)典書籍 你看過幾本?

    java八大經(jīng)典書籍 你看過幾本?

    java八大經(jīng)典書籍,你看過幾本?本文為大家分享了java學(xué)習(xí)書單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java書店系統(tǒng)畢業(yè)設(shè)計 用戶模塊(2)

    java書店系統(tǒng)畢業(yè)設(shè)計 用戶模塊(2)

    這篇文章主要介紹了java書店系統(tǒng)畢業(yè)設(shè)計,第二步系統(tǒng)總體設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法

    Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法

    這篇文章主要介紹了Java SSH 秘鑰連接mysql數(shù)據(jù)庫的方法,包括引入依賴的代碼和出現(xiàn)異常報錯問題,需要的朋友可以參考下
    2021-06-06
  • java復(fù)制文件和java移動文件的示例分享

    java復(fù)制文件和java移動文件的示例分享

    本文主要介紹了java將文件夾下面的所有的jar文件拷貝到指定的文件夾下面的方法,需要的朋友可以參考下
    2014-02-02
  • MyBatisPlus中@TableField注解的基本使用

    MyBatisPlus中@TableField注解的基本使用

    這篇文章主要介紹了MyBatisPlus中@TableField注解的基本使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java中避免過多if-else的幾種方法

    Java中避免過多if-else的幾種方法

    這篇文章主要介紹了Java中避免過多if-else的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Spring與Dubbo搭建一個簡單的分布式詳情

    Spring與Dubbo搭建一個簡單的分布式詳情

    這篇文章主要介紹了Spring與Dubbo搭建一個簡單的分布式詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 深入JAVA對象深度克隆的詳解

    深入JAVA對象深度克隆的詳解

    本篇文章是對JAVA對象深度克隆進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Java?Mybatis框架由淺入深全解析下篇

    Java?Mybatis框架由淺入深全解析下篇

    MyBatis是一個優(yōu)秀的持久層框架,它對jdbc的操作數(shù)據(jù)庫的過程進行封裝,使開發(fā)者只需要關(guān)注SQL本身,而不需要花費精力去處理例如注冊驅(qū)動、創(chuàng)建connection、創(chuàng)建statement、手動設(shè)置參數(shù)、結(jié)果集檢索等jdbc繁雜的過程代碼,本文將作為最終篇為大家介紹MyBatis的使用
    2022-07-07
  • Java中線程Thread的三種方式和對比

    Java中線程Thread的三種方式和對比

    這篇文章主要介紹了Java中線程Thread的三種方式和對比,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論