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实现局域网IP地址扫描

    下面我将详细讲解 Java 实现局域网 IP 地址扫描的完整攻略。这里将会分为以下几个步骤: 获取本机的 IP 地址 用正则表达式获取 IP 地址前缀 遍历 IP 地址前缀下的所有 IP 地址 发送 ICMP 包测试 IP 地址是否存活 下面分别进行讲解。 获取本机的 IP 地址 在 Java 中,我们可以通过调用 InetAddress.getLocalH…

    Java 2023年5月26日
    00
  • Angularjs实现多图片上传预览功能

    下面是关于AngularJS实现多图片上传预览功能的详细攻略: 1. 环境准备 在开始实现多图片上传预览功能前,需要确保以下环境已准备好: AngularJS框架; HTML和CSS基本知识; 文件上传插件jQuery File Upload; 一些基本的javascript和jQuery知识。 2. 实现步骤 第1步:引入jQuery和AngularJS框…

    Java 2023年6月15日
    00
  • Java8中新判空方法之Optional类的使用详解

    Java8新判空方法之Optional类的使用详解 简介 在Java8中,我们可以使用Optional类来优雅地处理 null 值的情况。 Optional 是一个容器对象,可能包含可null 可非null 的值。使用 Optional类,我们可以减少代码中出现的nullPointerException异常,从而使代码更加优雅。 Optional类的使用方式…

    Java 2023年5月26日
    00
  • 详解spring cloud如何使用spring-test进行单元测试

    当我们使用Spring Cloud来构建微服务应用程序的时候,我们需要对代码进行单元测试,以确保代码质量和应用的正确性。Spring提供了一个非常强大的测试框架:Spring Test,可以帮助我们实现Spring Cloud应用程序的单元测试。本文将详细介绍如何使用Spring Test进行单元测试。 什么是Spring Test 在我们开始介绍如何使用S…

    Java 2023年5月31日
    00
  • Java基于直方图应用的相似图片识别实例

    Java基于直方图应用的相似图片识别实例攻略 Java基于直方图应用的相似图片识别实例是一种常见的图像处理技术,可以通过计算图片直方图的相似度来识别相似图片。本攻略将介绍如何使用Java实现这一功能。 算法原理 相似图片识别的核心算法是计算图片直方图的相似度。直方图是针对单通道灰度图像而言,将图像中灰度级别划分为不同范围的区间(比如0-255),统计每个区间…

    Java 2023年5月19日
    00
  • Tomcat启动核心流程示例详解

    Tomcat启动核心流程示例详解 简介 Tomcat 是一个开源的 Web 应用服务器,是最流行的 Java Web 应用服务器之一。在开发和部署 Web 应用时,Tomcat 的启动过程是非常重要的,因为它决定了 Web 应用的运行状态以及访问方式等重要因素。下面将详细讲解 Tomcat 启动的核心流程,并提供两个示例来帮助理解。 启动流程 Tomcat …

    Java 2023年5月19日
    00
  • jsp实现简单用户7天内免登录

    实现简单用户7天内免登录,可以采用以下步骤: 添加一个cookie,保存用户信息和登录时间。当用户勾选“7天内免登录”时,在后台生成一个cookie并设置有效期为7天,将用户信息和当前时间保存到cookie中。具体实现代码如下: <% String username = request.getParameter("username"…

    Java 2023年6月15日
    00
  • 浅谈Java实体对象的三种状态以及转换关系

    浅谈Java实体对象的三种状态以及转换关系 在Java中,实体对象主要存在3种状态:瞬时状态、持久状态和游离状态。实体对象的状态会影响到实体对象在数据库中的存储及更新,因此在实际应用中应特别注意。 1. 瞬时状态 当Java程序中创建一个新对象时,该实体对象处于瞬时状态。瞬时状态的实体对象不与数据库中的任何数据对应,因此它也不具有持久化的能力。也就是指,我们…

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