前后端分离项目简单实现增删改查

2023-10-28

大家好,我是梦想皮皮,今天带来一篇关于springboot+vue+MySQL项目的粗浅的介绍,同时也用到了vue+element也集成了mybatis希望能帮助到大家。


该项目使用到springboot+vue+MySQL+mybatis同时还使用了element框架。element框架可以更快的开发前端界面不用花太多的时间在写前端上。前后端分离技术已成为互联网项目开发的业界标准使用方式。

首页界面

该界面使用到了表头固定和固定某列 这样可以方便我们查找信息

搜索功能:

 新增界面:

 更新界面:

 删除界面:

 

MySQL数据库的设计:

 

Controller层代码:

package com.example.demo.Controller;

import com.example.demo.mapper.BooksMapper;
import com.example.demo.pojo.books;
import com.example.demo.service.BooksServiceIMP;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@RestController
public class Controller {
    @Autowired
    BooksServiceIMP booksServiceIMP;

    @Autowired
    BooksMapper booksMapper;

    @RequestMapping("/ShowAll")
    public List<books> ShowAll(){
        return booksServiceIMP.SelectAllBooks();
    }

    @RequestMapping  ("/ShowOne")
    public List<books> ShowOne(
            @RequestParam("Author") String b_Author,
            @RequestParam("Name") String b_Name
    ){
        return booksServiceIMP.SelectOneBook(b_Author,b_Name);
    }

    @RequestMapping("/UpDataOne")
    public int UpDataOne(
            @RequestParam("id") int id,
            @RequestParam("bName") String bName,
            @RequestParam("bAuthor") String bAuthor,
            @RequestParam("bPress") String bPress
//            @RequestParam("bPrice") BigDecimal bPrice,
//            @RequestParam("bookstore") String bookstore,
//            @RequestParam("bType") String bType,
//            @RequestParam("bStock") int bStock,
//            @RequestParam("bExplain") String bExplain,
//            @RequestParam("bImage") String bImage
    ){
        HashMap map = new HashMap();
        map.put("id",id);
        map.put("bName",bName);
        map.put("bAuthor",bAuthor);
        map.put("bPress",bPress);
        System.out.println(map);
        return booksServiceIMP.UpdateOneBook(map);
    }

    @RequestMapping("/InsertOne")
    public int InsertOne(books books){
        System.out.println(books);
        return booksServiceIMP.insert(books);
    }

    @RequestMapping("/DeleteById")
    public int DeleteById(
            @RequestParam("id") int id
    ){
        return booksMapper.deleteById(id);
    }
}

解决跨域请求问题在config层中添加如下代码:

import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CoreConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry){

        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowCredentials(true)
                .allowedHeaders(CorsConfiguration.ALL)
                .allowedMethods(CorsConfiguration.ALL)
                .maxAge(3600);
    }
}

mybatis的xml文件代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.BooksMapper">
    <select id="SelectAllBooks" resultType="books">
        select * from books

    </select>
    <select id="SelectOneBook"  parameterType="Map" resultType="books">
        select
            *
        from books
        <where>
            <if test="b_Author !=null ">
            b_Author like "%"#{b_Author}"%"
            </if>
            <if test="b_Name !=null ">
            and b_Name like "%"#{b_Name}"%"
            </if>
        </where>
    </select>
    <update id="UpdateOneBook" parameterType="Map">
        update
            books
        set
            b_Name = #{bName},
            b_Author = #{bAuthor},
            b_Press = #{bPress}

        where
            id = #{id}
    </update>

</mapper>

vue主界面代码:

<template>
<div>
<el-container>
  <el-header>Header</el-header>
  <el-container>
    <el-aside width="200px">Aside</el-aside>
    <el-main>
      <el-table 
      :data="tableData" 
      style="width: 100%"
      max-height="400"
      :row-style="{ height: '60px' }"
      :cell-style="{ padding: '5px' }"
      >
        <el-table-column type="selection" width="55" align="center" >
        </el-table-column>
        <el-table-column prop="id" label="ID"  width="100" align="center" fixed>
        </el-table-column>
        <el-table-column prop="bname" label="书名"  width="120" align="center">
        </el-table-column>
        <el-table-column prop="bauthor" label="作者" width="150" align="center">
        </el-table-column>
        <el-table-column prop="bpress" label="出版社" width="150" align="center">
        </el-table-column>
        <el-table-column prop="bprice" label="价格" width="150" align="center">
        </el-table-column>
        <el-table-column prop="bookstore" label="书店" width="150" align="center">
        </el-table-column>
        <el-table-column prop="btype" label="类型" width="150" align="center">
        </el-table-column>
        <el-table-column prop="bstock" label="库存" width="150" align="center">
        </el-table-column>
        <el-table-column align="right" fixed="right" width="250">
          <template slot="header" slot-scope="scope">
            <el-input
              v-model="searchData"
              @keyup.enter.native="search"
              size="mini"
              placeholder="输入关键字搜索">
            </el-input>
          </template>
          <template slot-scope="scope">
            <el-button
              size="mini"
              @click="handleInsert(scope)">Insert</el-button>
            <el-button
              size="mini"
              @click="handleUpdate(scope)">Update</el-button>
            <el-button
              size="mini"
              type="danger"
              @click="handleDelete(scope)">Delete</el-button>
          </template>
        </el-table-column>
      
      </el-table>
    </el-main>
</div>
</template>

由于时间原因只发布了部分代码,需要源码的小伙伴可以私信俺欧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前后端分离项目简单实现增删改查 的相关文章

  • 使用除 SINGLE_TABLE 之外的任何其他 Hibernate 继承策略时 JVM 崩溃

    好吧 这可能不太可能 但还是这样吧 在Java JRE 1 6 0 26 b03 中我有两个类 SuperControl及其子类SubControl 它们都需要是持久对象 我正在使用 Hibernate Annotations 来实现这一点
  • 如何识别 Java 中的不可变对象

    在我的代码中 我正在创建一个对象集合 这些对象将由各种线程以只有在对象不可变的情况下才安全的方式访问 当尝试将新对象插入到我的集合中时 我想测试它是否是不可变的 如果不是 我将抛出异常 我能做的一件事是检查一些众所周知的不可变类型 priv
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如果基于 Spring 注解的控制器位于 jar 文件内,则该控制器无法工作

    我的子模块中有一些基于注释的控制器 这些模块作为 jar 文件部署 jar 文件中基于注释的控制器未加载到 spring 配置中 我使用 Eclipse 中的导出实用程序手动导出 jar 文件 有人遇到过这个问题吗 当您使用 Eclipse
  • Java Spring 应用程序存在内存泄漏。系统非堆内存不断增加

    我已使用 yourkit 分析器监视我的 Web 应用程序 保留最大大小的主要对象是 SessionFactoryImpl webappclassloader 和 CGlib 对象显示 spring crone调度程序会导致内存泄漏吗 我尝
  • 在 Hibernate 中创建 UPDATE RETURNING 查询

    在 Oracle 中 我们可以创建一个更新查询 该查询将使用 RETURNING 子句返回更新的记录 Hibernate中有类似的功能吗 除了数据库生成的值之外 Hibernate 显然不需要返回更新的实例 因为对象传递给Session s
  • 用 java 编写解释器时的 switch 或 if 语句

    当前的作业需要我编写一个程序 以一种非常微小且基本的编程语言 行为有点像 FORTRAN 来读取包含指令的文件并执行这些指令 基本上它是我猜的语言的简单解释器 它是完全线性的 所有语句都是按顺序定义的 并且只有字符串和整数变量 我需要查找和
  • 如何将自定义日志处理程序添加到 Google App Engine?

    我正在尝试向我的 java 应用程序添加自定义日志处理程序 我已经实现了一个扩展 java util Logging Handler 类的 InnerLogger 类 在我的logging properties中声明为处理程序 handle
  • 尝试在java中的Arraylist中查找对象的所有出现

    我有一个 Java ArrayList 我需要查找其中出现的所有特定对象 ArrayList indexOf Object 方法只找到一次出现 所以看来我还需要其他东西 我认为你不需要太花哨 以下应该可以正常工作 static
  • 错误代码:1305。函数或过程不存在

    因此 我在 MySQL 中创建一个函数 然后尝试向用户授予使用该函数的权限 但我无法这样做 这就是我正在做的 DELIMITER USE rxhelp36 scbn DROP FUNCTION IF EXISTS businessDayDi
  • 支持通过 OAuth 进行 Facebook/Twitter 身份验证的 CAS 服务器

    我正在寻找一个支持 Facebook Twitter 通过 OAuth 进行单点登录身份验证的 CAS 服务器 我检查过 JASIG CAS 服务器 但它看起来不支持它们 我的 java web 应用程序基于 Spring Security
  • MySQL 排序顺序 - 排序规则?

    我在对 MySQL 中的 char 字段进行排序时遇到困难 问题是重音字符与非重音字符混淆 例如 Abc bd Acc 我认为这可能与整理有关 所以我将表格的排序规则更改为utf8 ut8 bin 看完之后这个帖子 https stacko
  • 从关卡堆栈中获取相对比例的数学

    为这个可怕的标题道歉 我花了 10 分钟试图用一句话来解释这一点 但失败了 虽然提示这个问题的应用程序是用Java Android 编写的 但我认为它非常通用并且适用于任何语言 欢迎使用伪代码 或简单的英语 回复 我不确定是否应该标记所有通
  • Java 泛型:如何为泛型类型指定类类型?

    我有一个 POJO 指定为 MyClass u where U是泛型类型参数 我正在尝试编写一个接受类引用的实用方法Class u
  • 在 eclipse 之外将 Spring MVC 应用程序部署到 tomcat 的幕后会发生什么?

    我猜想使用像 eclipse 这样很棒的 IDE 的一个缺点是你会忽略应用程序幕后发生的事情 我是一名 Ruby 开发人员 所以不是一名 Java 老手 所以我一直在用 java 编写一个项目 并使用 spring 框架进行 IOC 和 M
  • 在Java中多次读取System.in会导致IOException?

    我正在尝试创建一个小命令行游戏来强化我在过去几个月中在 Java 中学到的一些东西 我正在尝试创建一个名为 readInput 的方法 它返回一个我可以一次又一次调用的字符串 第一次它工作正常 但第二次它会导致 IO Exception 如
  • 在服务器内部调用 Web 服务

    我有一个网络服务 getEmployee 当传递 id 时 它会获取单个员工的员工详细信息 同一服务器上的另一个 Web 服务 getEmployeeList 当传递一个部门时 它会获取整个员工列表 这将获取部门的 ID 然后调用 getE
  • 找不到符号assertEquals

    我正在尝试为计算器编写第一个单元测试 但 NetBeans 说它找不到该符号assertEquals和注释 Test 我应该包括一些东西吗 我正在使用 NetBeans 7 3 1 和 W7 package calculator impor
  • Selenium - 等待网络流量

    我们将 Selenium 与 Java API 和一些 Javascript 用户扩展一起使用 我们在应用程序中使用了大量 AJAX 调用 我们的许多测试随机失败 因为有时 AJAX 调用完成得比其他时候慢 因此页面未完全加载 我们通过等待
  • 如何使用剪辑来减少绘画时间?

    我正在尝试使用 Clip 来减少 CPU 负载 但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾 另外 打开和关闭剪辑似乎对 CPU 负载没有影响 在任一情况下 大部分时间似乎都花在重绘管理器和绘制缓冲图像上 import static jav

随机推荐