广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot+Vue实现数据添加功能
  • 186
分享到

SpringBoot+Vue实现数据添加功能

2024-04-02 19:04:59 186人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一、添加代码生成器 用来自动为数据库映射类建立:mapper、service、controller 注:代码生成器的写法,参考官方文档:https://mp.baomidou.co

一、添加代码生成器

用来自动为数据库映射类建立:mapper、service、controller

注:代码生成器的写法,参考官方文档:https://mp.baomidou.com/


package com.hanmh.utils;

import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.hanmh.pojo.BasePojo;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class HanGenerator {
  public static void main(String[] args) {
    // 代码生成器
    AutoGenerator mpg = new AutoGenerator();
 
    // 全局配置
    GlobalConfig GC = new GlobalConfig();
    //这样获取到的是父项目的目录
    String projectPath = System.getProperty("user.dir");
    String pojoProject = "pojo" + "/src/main/java/com/hanmh/pojo";
    String otherProject = "admin";
 
    //gc.setOutputDir(projectPath + "/src/main/java");
    gc.setAuthor("hanmh");
    gc.setOpen(false);
    // gc.setswagger2(true); 实体属性 Swagger2 注解
    mpg.setGlobalConfig(gc);
 
    // 数据源配置
    DataSourceConfig dsc = new DataSourceConfig();
    dsc.setUrl("jdbc:Mysql://39.105.231.52:3306/db?useUnicode=true&useSSL=false&characterEncoding=utf8");
    // dsc.setSchemaName("public");
    dsc.setDriverName("com.mysql.jdbc.Driver");
    dsc.setUsername("root");
    dsc.setPassword("123456");
    mpg.setDataSource(dsc);
 
    // 包配置
    PackageConfig pc = new PackageConfig();
    pc.setParent("com.hanmh"); //设置父包
 
    //自定义生成路径
    Map<String,String> pathInfo = new HashMap<String,String>();
    pathInfo.put("entity_path", projectPath + "/" + pojoProject); //pojo位置
    pathInfo.put("controller_path", projectPath + "/" + otherProject + "/src/main/java/com/hanmh/controller");
    pathInfo.put("service_impl_path", projectPath + "/" + otherProject + "/src/main/java/com/hanmh/service/impl");
    pathInfo.put("service_path", projectPath + "/" + otherProject + "/src/main/java/com/hanmh/service");
    pathInfo.put("mapper_path", projectPath + "/" + otherProject + "/src/main/java/com/hanmh/mapper");
    pathInfo.put("xml_path", projectPath + "/" + otherProject + "/src/main/resources/com/hanmh/mapper");
    pc.setEntity("pojo"); //实体类
    pc.setPathInfo(pathInfo);
    mpg.setPackageInfo(pc);
 
    // 自定义配置
    InjectionConfig cfg = new InjectionConfig() {
      @Override
      public void initMap() {
        // to do nothing
      }
    };
 
    // 如果模板引擎是 freemarker
    String templatePath = "/templates/mapper.xml.ftl";
 
 
    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
    strategy.setNaming(NamingStrategy.underline_to_camel);
    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    //生成时,继承的父类
    strategy.setSuperEntityClass(BasePojo.class);
    strategy.setEntityLombokModel(true);
    strategy.setRestControllerStyle(true);
    // 公共父类
    strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");
    // 写于父类中的公共字段
    strategy.setSuperEntityColumns("id");
    strategy.setInclude("ums_admin");
    strategy.setControllerMappingHyphenStyle(true);
    strategy.setTablePrefix(pc.getModuleName() + "_");
    mpg.setStrategy(strategy);
    mpg.setTemplateEngine(new FreemarkerTemplateEngine());
    mpg.execute();
  }
}

二、导入需要的jar

前期需要导入的包有:mybatis-plus、mysql、duracloud(工具包)、pojo、spring-boot-starter-WEB


<dependency>
  <groupId>com.hanmh</groupId>
  <artifactId>pojo</artifactId>
</dependency>
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
</dependency>
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
  <groupId>org.duracloud</groupId>
  <artifactId>common</artifactId>
</dependency>

三、创建启动类

启动类必须创建在父包下面,注意在SpringBoot中,并不是不扫包,而是框架帮助完成了这件事,它会扫描启动类所在包下的所有类及其子包中的类


package com.hanmh;
 
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
@MapperScan("com.hanmh.mapper")
public class AdminRun {
  public static void main(String[] args) {
    SpringApplication.run(AdminRun.class);
  }
}

四、创建配置文件(application.yml)


server:
 port: 8080
spring:
 application:
  name: admin
 datasource:
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql://39.105.231.52:3306/db?useUnicode=true&useSSL=false&characterEncoding=utf8
  username: root
  passWord: 123456
  hikari:
   maximum-pool-size: 20
   minimum-idle: 10
 servlet:
  #文件传输配置
  multipart:
   max-file-size: 5MB
   max-request-size: 10MB
#运行的过程中输出sql语句(日志信息)
logging:
 level:
  com.hanmh.mapper: debug

五、返回值统一定义

1、ResultJSON


package com.hanmh.pojo;
 
import lombok.Data;
 
@Data
public class Resultjson {
  private Integer code; //200成功,500错误
  private Object obj;
  private String message;
  public ResultJson(ResultCode resultCode, Object obj) {
    this.code = resultCode.getCode();
    this.message = resultCode.getMessage();
    this.obj = obj;
  }
  public ResultJson(ResultCode resultCode, Object obj, String message) {
    this.code = resultCode.getCode();
    this.message = message;
    this.obj = obj;
  }
 
 
  public static ResultJson success(Object obj) {
    return new ResultJson(ResultCode.SUCCESS, obj);
  }
 
  public static ResultJson success(Object obj, String message) {
    return new ResultJson(ResultCode.SUCCESS, obj, message);
  }
 
  public static ResultJson error(Object obj) {
    return new ResultJson(ResultCode.ERROR, obj);
  }
  public static ResultJson error() {
    return new ResultJson(ResultCode.ERROR, null);
  }
  public static ResultJson error(String message) {
    return new ResultJson(ResultCode.ERROR, null, message);
  }
}

2、ResultCode

定义4种返回代号和返回信息,使用枚举类进行实现


package com.hanmh.pojo;
 
import lombok.Data;
import lombok.Getter;
 
@Getter
public enum ResultCode {
  SUCCESS(200, "请求成功"),
  ERROR(500, "请求失败"),
  NOAUTH(401, "用户未登录或者登录超时"), //操作时
  NOPREMISSION(403, "没有此权限");
  private Integer code;
  private String message;
  //枚举类型的构造默认为私有
 
  private ResultCode(Integer code, String message) {
    this.code = code;
    this.message = message;
  }
}

六、创建基础pojo

在所有的数据库表种,共有的字段是ID,现在将id独立出来

1、导入 mybatis-plus-annotation包

为了使用该包内部的IdType等类内部提供的注解,以告诉BasePojo中某些字段在数据库表中的存在与否


<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-annotation</artifactId>
  <version>3.0-RELEASE</version>
</dependency>

2、BasePojo类 


package com.hanmh.pojo;
 
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.omg.CORBA.IDLType;
 
@Data
public class BasePojo {
  @TableId(type = IdType.AUTO)
  private Integer id;
  
  //做分页操作需要的字段
  @TableField(exist = false)
  private Integer pageNO;
  @TableField(exist = false)
  private Integer pageSize;
}

七、后端添加数据

1、密码加密

(1)需要使用安全包提供加密服务(security)


<dependency>
  <groupId>org.springframework.security</groupId>
  <artifactId>spring-security-core</artifactId>
</dependency>

2、将加密类(BCryptPasswordEncoder)放入ioc容器

在SpringBoot环节,需要将某个类加入IOC容器,就需要在配置类中,配置@Bean节点


@Configuration
public class AdminConfig {
  @Bean
  //将BCryptPasswordEncoder放进IOC容器
  BCryptPasswordEncoder getPasswordEncoder() {
    return new BCryptPasswordEncoder();
  }
}

注:使用此方法对数据进行加密的原因:此加密方法相同明文密码多次可以生成不同的密文,而MD5相同密码则会生成相同的密文

3、后端添加数据简单实现


@PostMapping("/add")
ResultJson add(UmsAdmin umsAdmin) throws InterruptedException, IOException {
  //对密码加密
  umsAdmin.setPassword(passwordEncoder.encode(umsAdmin.getPassword()));
 
  //TimeUnit.SECONDS.sleep(2);
  return ResultJson.success(adminService.save(umsAdmin), "添加用户成功");
}

八、前端页面添加功能

1、添加用户(按钮和弹窗)


<el-button>:elementUI按钮标签
<el-button type="primary" plain @click="add">添加用户</el-button>
<!-- <el-dialog> 代表弹窗 :visible.sync表示显示或隐藏-->
<!-- close-on-click-modal代表点击对话框以外区域是否可以关闭 -->
<el-dialog 
:title="dialog.title" 
:visible.sync="dialog.show"
:close-on-click-modal="false"
width="450px">
 <AdminEdit :show.sync="dialog.show" v-if="dialog.show"></AdminEdit>
</el-dialog>

(1)添加用户功能


add() {
 this.dialog.show = true
 this.dialog.title = "添加用户"
}

(2)添加内容弹窗


<template>
 <div>
 <el-fORM :model="forms" :rules="rules" ref="ruleForm" label-width="100px">
  <el-form-item label="登录名" prop="loginName">
  <el-input v-model="forms.loginName" placeholder="请输入登录名"></el-input>
  </el-form-item>
  <el-form-item label="昵称" prop="name">
  <el-input v-model="forms.name" placeholder="请输入昵称"></el-input>
  </el-form-item>
  <el-form-item label="密码" prop="password">
  <el-input v-model="forms.password" placeholder="请输入密码" show-password></el-input>
  </el-form-item>
  <el-form-item label="邮箱" prop="email">
  <el-input v-model="forms.email" placeholder="请输入邮箱"></el-input>
  </el-form-item>
  <el-form-item label="手机号" prop="phone">
  <el-input v-model="forms.phone" placeholder="请输入手机号"></el-input>
  </el-form-item> 
  <el-form-item label="头像" prop="imGobj">
  
  </el-form-item>
  <el-form-item>
  <el-button size="small" type="primary" plain @click="save">保存</el-button>
  </el-form-item>
 </el-form>
 </div>
</template>
 
<script>
 export default{
 name: 'AdminEdit',
 props:{
  show:{
  type: Boolean
  }
 },
 data(){
  return {
  forms: {
   loginName: '',
   name: '',
   password: '',
   email: '',
   phone: '',
   imgobj: '这是一张图片'  
  },
  rules:{
   loginName:[
   {required: true, message: '请输入登录名', trigger: 'blur'},
   {min : 1, max: 20, message: '长度在1-20之间', trigger: 'change'}
   ],
   name:[
   {required: true, message: '请输入昵称', trigger: 'blur'},
   {min : 1, max: 20, message: '长度在1-20之间', trigger: 'change'}
   ],
   password:[
   {required: true, message: '请输入密码', trigger: 'blur'},
   {min : 1, max: 100, message: '长度在1-100之间', trigger: 'change'}
   ],
   email:[
   {required: true, message: '请输入邮箱', trigger: 'blur'},
   {min : 1, max: 50, message: '长度在1-50之间', trigger: 'change'},
   {type: 'email', message: '请输入正确格式的邮箱', trigger: 'blur'}
   ],
   phone:[
   {required: true, message: '请输入电话号', trigger: 'blur'},
   {min : 1, max: 20, message: '长度在1-20之间', trigger: 'change'},
   {pattern: /^1([38][0-9]|4[5-9]|5[0-3,5-9]|66|7[0-8]|9[89])[0-9]{8}$/, message: '请输入正确的手机号', trigger: 'blur'}
   ],
  }
  }
 },
 methods:{
  
  save() {
  //提交表单前需要对表单再次进行验证
  //获取表单对象
        
        //表单二次验证
  this.$refs['ruleForm'].validate((flag) => {
   //如果通过验证,则进行表单数据提交
   if(flag === true) {
   this.request('/umsadmin/add', 'post', this.forms, response => {
    this.$message.success(response.message)
   })
   }
  })
  },
  changeimg(file, fileList) {
  this.forms.imgobj = file.raw
  },
  removeimg() {
  this.forms.imgobj = null
  }
 }
 }
</script>
 
<style>
</style>

2、此时前端给后端发post请求会出现跨域错误

跨域错误解决需要在后端植入跨域过滤器(Bean节点)


//跨域问题解决
@Bean
CorsFilter getCorsFilter() {
  UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();
  CorsConfiguration corsConfiguration = new CorsConfiguration();
  corsConfiguration.addAllowedHeader("*");
  corsConfiguration.addAllowedMethod("*");
  corsConfiguration.addAllowedOrigin("*"); //域名
  configurationSource.reGISterCorsConfiguration("/**", corsConfiguration);
  
  return new CorsFilter(configurationSource);
}

到此这篇关于SpringBoot+Vue实现数据添加功能的文章就介绍到这了,更多相关SpringBoot Vue数据添加内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot+Vue实现数据添加功能

本文链接: https://www.lsjlt.com/news/121644.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot+Vue实现数据添加功能
    一、添加代码生成器 用来自动为数据库映射类建立:mapper、service、controller 注:代码生成器的写法,参考官方文档:https://mp.baomidou.co...
    99+
    2022-11-11
  • SpringBoot 实现动态添加定时任务功能
    目录代码结构1. 配置类2. 定时任务类型枚举3. 实际执行任务实现类4. 定时任务包装器5. 任务注册器 (核心)6. 使用最后最近的需求有一个自动发布的功能, 需要做到每次提交都...
    99+
    2022-11-13
  • Vue使用antd组件a-form-model实现数据连续添加功能
    源码 <a-form-model ref="ruleForm" :model="form" :rules="rules" :label-col="{ span: 5 }" :...
    99+
    2022-12-24
    Vue数据连续添加 Vue antd组件a-form-model
  • vue中添加语音播报功能的实现
    1:首先把我们的静态资源文件加入到前端工程项目当中 我这里mp3文件就是要播报的语言文件 2: 页面中加入标签 <!-- src 后面的链接是我保存在static文件下的一段...
    99+
    2022-11-13
  • 怎么使用Vue实现添加好友功能
    这篇文章主要介绍了怎么使用Vue实现添加好友功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Vue实现添加好友功能文章都会有所收获,下面我们一起来看看吧。一、前置知识在开始介绍添加好友功能之前,我们需...
    99+
    2023-07-06
  • vue动态添加表单validateField验证功能实现
    vue动态添加表单validateField验证,代码如下所示: <template> <el-form ref="form" :model="form" ...
    99+
    2023-05-14
    vue动态添加表单 vue  validateField验证
  • Vue简化用户查询/添加功能的实现
    目录1. 查询功能1.1 Vue核心对象:1.2 brand.html:1.3 selectAllServlet(无变化):2. 添加功能2.1 addBrandhtml:2.2 V...
    99+
    2023-01-29
    Vue用户查询 Vue用户添加
  • 怎么用SpringBoot实现动态添加定时任务功能
    这篇“怎么用SpringBoot实现动态添加定时任务功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用SpringBo...
    99+
    2023-06-29
  • VUE+SpringBoot实现分页功能
    本文主要介绍一下 Vue + SpringBoot 中如何实现一个分页列表数据。 1、效果展示 2、VUE代码 VUE之视图定义 <el-row> ...
    99+
    2022-11-12
  • springboot+vue实现登录功能
    本文实例为大家分享了springboot+vue实现登录功能的具体代码,供大家参考,具体内容如下 目录结构 前端端口:8080 后端端口:8900 login.vue <...
    99+
    2022-11-12
  • vue+springboot实现登录功能
    本文实例为大家分享了vue+springboot实现登录功能的具体代码,供大家参考,具体内容如下 1. 登录功能的实现 实现提交表单的代码如下: async submitForm...
    99+
    2022-11-12
  • springboot vue前后端接口测试树结点添加功能
    目录基于springboot+vue的测试平台开发一、前端Tree树形控件的append方法二、后端实现节点新增接口1. controller 层2. service 层三、前后端联...
    99+
    2022-11-13
  • java怎么实现添加功能
    要实现添加功能,你需要在Java中编写代码来处理添加操作。以下是一些实现添加功能的步骤:1. 创建一个类或方法来处理添加操作。这个类...
    99+
    2023-08-15
    java
  • Ajax如何实现向数据库修改和添加功能
    这篇文章将为大家详细讲解有关Ajax如何实现向数据库修改和添加功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。修改和添加关于数据库的信息,可以用于任何的添加和修改这些数...
    99+
    2022-10-19
  • vue实现本地存储添加删除修改功能
    本文实例为大家分享了vue实现本地存储添加删除修改的具体代码,供大家参考,具体内容如下 实现功能: 输入的内容添加到正在进行列表中, 双击修改功能, 点击esc键,取消,还是之前的内...
    99+
    2022-11-12
  • SpringBoot数据校验功能的实现
    1.pom.xml <xml version="1.0" encoding="UTF-8"> <project xmlns="http://maven.apache...
    99+
    2022-11-13
  • springboot+vue实现验证码功能
    本文实例为大家分享了springboot+vue实现验证码功能的具体代码,供大家参考,具体内容如下 1.工具类 直接用不用改 package com.example.demo.U...
    99+
    2022-11-12
  • php如何实现商品添加功能并写入数据库
    这篇文章主要介绍了php如何实现商品添加功能并写入数据库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现商品添加功能并写入数据库文章都会有所收获,下面我们一起来看看吧。数据库表 写入数据的...
    99+
    2023-07-05
  • vue动态添加表单validateField验证功能如何实现
    今天小编给大家分享一下vue动态添加表单validateField验证功能如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-07-05
  • springboot+dynamicDataSource怎么实现动态添加切换数据源
    今天小编给大家分享一下springboot+dynamicDataSource怎么实现动态添加切换数据源的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作