springboot结合vue实现增删改查及分页查询

下面是Spring Boot结合Vue.js实现增删改查和分页查询的攻略:

1. 准备工作

  • 安装Java Development Kit (JDK)及Maven
  • 安装Node.js和Vue CLI
  • 创建Spring Boot项目

2. 引入前端框架

在Spring Boot项目中的pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.46</version>
</dependency>

使用Vue CLI创建一个新的Vue项目,然后将创建的内容放入到Spring Boot项目的/resources/static目录下。

3. 实现增删改查

在Spring Boot中,我们可以使用@RestController注释来定义控制器。以下是一个示例控制器,用于从前端页面接收数据并将其保存到Java列表中:

@RestController
@RequestMapping("/api")
public class UserController {
    private List<User> userList = new ArrayList<>();

    @GetMapping("/users")
    public List<User> getUsers() {
        return userList;
    }

    @PostMapping("/users")
    public void addUser(@RequestBody User user) {
        userList.add(user);
    }

    @PutMapping("/users")
    public void updateUser(@RequestBody User user) {
        for (int i = 0; i < userList.size(); i++) {
            if (userList.get(i).getId() == user.getId()) {
                userList.set(i, user);
                break;
            }
        }
    }

    @DeleteMapping("/users/{id}")
    public void deleteUser(@PathVariable("id") int id) {
        for (int i = 0; i < userList.size(); i++) {
            if (userList.get(i).getId() == id) {
                userList.remove(i);
                break;
            }
        }
    }
}

4. 实现分页查询

我们可以使用Spring Boot提供的Pageable接口和Page实现类来实现分页查询。以下是一个示例方法,用于从前端页面接收分页参数并根据这些参数来执行分页查询:

@GetMapping("/users")
public Page<User> getUsersByPage(@RequestParam("page") int page,
                                 @RequestParam("size") int size) {
    Page<User> pageUser = new PageImpl<>(userList, PageRequest.of(page, size), userList.size());
    return pageUser;
}

在Vue中,我们可以使用Element-UI来实现分页器。以下是一个示例实现:

<template>
  <el-pagination
    :total="total"
    :page-size="pageSize"
    :current-page.sync="currentPage"
    layout="total,prev, pager, next"
    @current-change="handleCurrentChange"
  ></el-pagination>
</template>

<script>
export default {
  name: "Pagination",
  props: {
    total: {
      type: Number,
      required: true,
    },
    pageSize: {
      type: Number,
      required: true,
    },
    onPageChange: {
      type: Function,
      required: true,
    },
  },
  data() {
    return {
      currentPage: 1,
    };
  },
  methods: {
    handleCurrentChange(page) {
      this.currentPage = page;
      this.onPageChange(page);
    },
  },
};
</script>

在调用分页查询API时,我们可以为其提供当前页和页面尺寸参数。页面加载后,我们可以将其值传递给分页器组件。以下是一个示例Vue组件,用于从后端API检索和显示用户数据:

<template>
  <el-table :data="users" style="width: 100%">
    <el-table-column prop="name" label="Name"></el-table-column>
    <el-table-column prop="age" label="Age"></el-table-column>
    <el-table-column prop="address" label="Address"></el-table-column>
    <el-table-column label="Action">
      <template slot-scope="scope">
        <el-button
          type="primary"
          size="small"
          @click="edit(scope.row)"
          >Edit</el-button
        >
        <el-button
          type="danger"
          size="small"
          @click="remove(scope.row.id)"
          >Delete</el-button
        >
      </template>
    </el-table-column>
  </el-table>
  <pagination
    :total="totalElements"
    :page-size="pageSize"
    :on-page-change="getUsers"
  ></pagination>
</template>

<script>
import Pagination from "@/components/Pagination.vue";
export default {
  components: {
    Pagination,
  },
  data() {
    return {
      users: [],
      totalElements: 0,
      currentPage: 1,
      pageSize: 5,
    };
  },
  mounted() {
    this.getUsers();
  },
  methods: {
    getUsers() {
      axios
        .get(`/api/users?page=${this.currentPage - 1}&size=${this.pageSize}`)
        .then((response) => {
          this.users = response.data.content;
          this.totalElements = response.data.totalElements;
        })
        .catch((error) => {
          console.log(error);
        });
    },
    remove(id) {
      axios
        .delete(`/api/users/${id}`)
        .then(() => {
          this.getUsers();
        })
        .catch((error) => {
          console.log(error);
        });
    },
  },
};
</script>

以上是Spring Boot结合Vue.js实现增删改查和分页查询的详细攻略。其中包含了一个控制器、一个分页查询方法和一个Vue组件用于检索和显示数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot结合vue实现增删改查及分页查询 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java Spring的两种事务你知道吗

    下面我将详细讲解Java Spring的两种事务。 什么是事务 在计算机领域中,事务(Transaction)指的是一组要么全部执行,要么全部不执行的操作。在关系型数据库等领域,事务可以保证数据的一致性和完整性。如果其中任意一个操作失败,则整个事务自动回滚到未执行前的状态。Spring框架提供了对事务的支持。 Spring的事务特性 Spring框架提供了两…

    Java 2023年5月19日
    00
  • 详解SpringBoot的Run方法

    详解Spring Boot的Run方法 Spring Boot的Run方法是启动Spring Boot应用程序的核心方法。在本文中,我们将深入探讨Spring Boot的Run方法,包括其工作原理、参数和示例。 Spring Boot的Run方法工作原理 Spring Boot的Run方法是通过SpringApplication类的静态run()方法来启动S…

    Java 2023年5月15日
    00
  • 使用JVM常用GC日志打印参数

    使用JVM常用GC日志打印参数的攻略如下: 1. 为何需要 GC 日志? 在应用程序运行时,JVM 会管理内存。当内存不足时,JVM 需要回收一些不再使用的对象,以释放内存空间,这个过程被称为垃圾回收(GC)。 监控和调优垃圾回收是一项非常重要的任务。为了实现这个任务,JVM 提供了一种功能,即输出 GC 日志。通过观察 GC 日志,我们可以获取关于堆的使用…

    Java 2023年5月26日
    00
  • Maven环境安装配置和新建项目介绍

    下面我将详细讲解 Maven 环境安装配置和新建项目的完整攻略,包含以下几个步骤: 安装和配置 Java 环境 下载 Maven 并安装 配置 Maven 环境变量 新建 Maven 项目 1. 安装和配置 Java 环境 在安装 Maven 前需要先安装 Java 环境,可以到 Java 官网下载对应版本的 JDK 进行安装并配置环境变量。 2. 下载 M…

    Java 2023年5月20日
    00
  • 在Eclipse中在线安装Emmet和图文使用教程

    下面是在Eclipse中在线安装Emmet和图文使用教程的完整攻略: 在Eclipse中在线安装Emmet 打开Eclipse,点击菜单栏的“Help” -> “Eclipse Marketplace”; 在弹出的窗口搜索框中,输入“Emmet”,然后点击搜索按钮; 在搜索结果中,找到“Emmet – The Essential Toolkit for…

    Java 2023年6月15日
    00
  • Java8方法引用及构造方法引用原理实例解析

    Java8方法引用及构造方法引用原理实例解析 Java 8中引入了方法引用(Method Reference)的语法,可以根据Lambda表达式,快速地指向一个已有方法,从而简化编程。 方法引用使用“::”符号来定位某个方法,并用Lambda表达式将方法和函数式接口绑定在一起,从而由Java编译器自动完成Lambda表达式的类型推断。 方法引用的语法格式为:…

    Java 2023年5月26日
    00
  • 10个微妙的Java编码最佳实践

    下面是“10个微妙的Java编码最佳实践”的详细攻略: 1. 始终使用@Override注解 Java 5 中引入了 @Override 注解,该注解用于表示方法重写。虽然在使用时并不是必须的,但如果我们在重写一个方法时没有添加 @Override 注解,极有可能出现意想不到的错误,比如拼写错误或参数数量不足等。因此,我们应该始终在重写方法时添加 @Over…

    Java 2023年5月19日
    00
  • Java中@DateTimeFormat和@JsonFormat注解介绍

    当在Java中处理时间或日期数据时,我们常需要使用特定的格式将其转换成字符串或反向解析。而在Spring框架中,我们可以使用@DateTimeFormat和@JsonFormat两个注解来精细地控制时间和日期的格式化。下面将详细介绍这两个注解的使用方法和示例。 @DateTimeFormat注解介绍 1. 作用 @DateTimeFormat注解可以用于解析…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部