中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 基于SpringBoot和Vue3的博客平臺文章列表與分頁功能怎么實現

基于SpringBoot和Vue3的博客平臺文章列表與分頁功能怎么實現

發布時間:2023-04-11 16:28:53 來源:億速云 閱讀:135 作者:iii 欄目:開發技術

今天小編給大家分享一下基于SpringBoot和Vue3的博客平臺文章列表與分頁功能怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1. 后端Spring Boot實現

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

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接口及實現

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文件中,修改對應的實現。

@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參數,并調用findPagecount方法獲取分頁數據。

@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實現

2.1 修改文章列表頁面組件

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

<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) => {
      // 跳轉到編輯頁面
    };
 
    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>組件以實現分頁功能。當用戶更改分頁大小或當前頁時,分別觸發handleSizeChange和handleCurrentChange方法。這兩個方法都會調用fetchArticles方法,根據當前頁和分頁大小重新獲取文章列表數據。

以上就是“基于SpringBoot和Vue3的博客平臺文章列表與分頁功能怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东城区| 贵德县| 秦安县| 河源市| 山东| 韩城市| 遂川县| 芷江| 青田县| 类乌齐县| 东平县| 田东县| 安康市| 武乡县| 新密市| 来宾市| 得荣县| 英超| 锡林浩特市| 健康| 灵武市| 临潭县| 金塔县| 东丽区| 城固县| 资兴市| 炎陵县| 庆元县| 历史| 广宁县| 湖口县| 任丘市| 赫章县| 剑河县| 江都市| 阿克| 湖南省| 长乐市| 隆子县| 淮安市| 湛江市|