当前位置: 首页 > news >正文

Vue+SpringBoot项目开发:后台登陆功能的实现(二)

写在开始:一个搬砖程序员的随缘记录

文章目录

  • 一、SpringBoot项目的搭建
  • 二、数据库配置
    • 1、新建数据库
    • 2、新建用户表
  • 三、SpringBoot项目的配置

一、SpringBoot项目的搭建

项目搭建传送门:从零开始,SpringBoot项目快速搭建

二、数据库配置

1、新建数据库

在本地mysql数据库新建库,库名:vue_demo,(数据库名字可自行更改,更改完记得在pom.xml中也同步更改)

2、新建用户表

CREATE TABLE `user` (`id` int(11) NOT NULL,`username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

三、SpringBoot项目的配置

项目结构
在这里插入图片描述
下面是具体文件的代码
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.cn</groupId><artifactId>vue_demo</artifactId><version>0.0.1-SNAPSHOT</version><name>vue_demo</name><description>Demo project for Spring Boot</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><skipTests>true</skipTests><druid.version>1.1.10</druid.version><mysql-connector.version>8.0.16</mysql-connector.version><mybatis-plus.version>3.3.2</mybatis-plus.version></properties><dependencies><!--SpringBoot通用依赖模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--SpringBoot校验框架--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><!--集成druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!--Mysql数据库驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql-connector.version}</version></dependency><!--lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--SpringBoot配置处理--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!--MyBatis Plus 依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

返回实体类封装ResultBody
ResultBody.java

package com.cn.vuedemo.entity;/*** 请求** @author demo*/
public class ResultBody<T> {/*** 响应码*/private int code;/*** 消息*/private String message;/*** 数据*/private T data;public ResultBody(int code, String message, T data) {this.code = code;this.message = message;this.data = data;}public ResultBody(String message) {this.code = 200;this.message = message;}public ResultBody(int code, String message) {this.code = code;this.message = message;}public ResultBody(T data) {this.code = 200;this.message = "请求成功";this.data = data;}public ResultBody(int code) {this.code = code;this.message = "请求成功";}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public T getData() {return data;}public void setData(T data) {this.data = data;}
}

用户实体类
User.java

package com.cn.vuedemo.entity;import lombok.Data;/*** @author demo* @date 2023/07/31 11:18*/
@Data
public class User {/*** id* */private Integer id;/*** 账号* */private String username;/*** 密码* */private String password;
}

登录方法入参
LoginReq.java

package com.cn.vuedemo.model.request;import lombok.Data;/*** @author demo* @since 2023/07/31 11:18*/
@Data
public class LoginReq {/*** 账号* */private String username;/*** 密码* */private String password;
}

service
UserService.java

package com.cn.vuedemo.service;import com.cn.vuedemo.entity.User;
import com.cn.vuedemo.model.request.LoginReq;import java.util.List;/*** @author demo* @since 2023/07/31 11:18*/
public interface UserService {/*** 登录** @param loginReq loginReq* @return com.cn.vuedemo.entity.User* @author demo* @since 2023/07/31 11:18*/User login(LoginReq loginReq);
}

service实现
UserServiceImpl.java

package com.cn.vuedemo.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cn.vuedemo.entity.User;
import com.cn.vuedemo.mapper.UserMapper;
import com.cn.vuedemo.model.request.LoginReq;
import com.cn.vuedemo.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;/*** @author demo* @since 2023/07/31 11:18*/
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {private final UserMapper userMapper;@Overridepublic User login(LoginReq loginReq) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.lambda().eq(User::getUsername, loginReq.getUsername()).eq(User::getPassword, loginReq.getPassword());User user = userMapper.selectOne(queryWrapper);return user;}
}

mapper
UserMapper.java

package com.cn.vuedemo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cn.vuedemo.entity.User;
import org.apache.ibatis.annotations.Mapper;/*** @author demo* @since 2023/07/31 11:18*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
}

控制层controller
LoginController.java

package com.cn.vuedemo.controller;import com.cn.vuedemo.entity.ResultBody;
import com.cn.vuedemo.entity.User;
import com.cn.vuedemo.model.request.LoginReq;
import com.cn.vuedemo.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;
import java.util.Objects;/*** @author demo* @date 2023/07/31 11:18*/
@RestController
@Slf4j
@RequestMapping("/user")
@RequiredArgsConstructor
public class LoginController {private final UserService userService;/*** 登陆** @param loginReq loginReq* @return com.cn.vuedemo.entity.ResultBody* @author demo* @since 2023/7/31*/@PostMapping(value = "/login")public ResultBody login(@RequestBody LoginReq loginReq) {log.info("loginReq:" + loginReq);User user = userService.login(loginReq);if (Objects.isNull(user)) {return new ResultBody(500, "密码不正确");}return new ResultBody(user);}
}

Over

相关文章:

Vue+SpringBoot项目开发:后台登陆功能的实现(二)

写在开始:一个搬砖程序员的随缘记录文章目录 一、SpringBoot项目的搭建二、数据库配置1、新建数据库2、新建用户表 三、SpringBoot项目的配置 一、SpringBoot项目的搭建 项目搭建传送门&#xff1a;从零开始&#xff0c;SpringBoot项目快速搭建 二、数据库配置 1、新建数据库…...

arcgis pro 3.0.2 安装及 geemap

arcgis pro 3.0.2 安装及 geemap arcgis pro 3.0.2 安装 arcgis pro 3 版本已经很多了&#xff0c;在网上找到资源就可以进行安装 需要注意的是&#xff1a;有的文件破解文件缺少&#xff0c;导致破解不成功。 能够新建地图就是成功了&#xff01; geemap安装 1.需要进行环…...

oracle插入多表(insert all/first)

1、建测试表 CREATE TABLE EDW_INT (AGMT_NO VARCHAR2(40 BYTE) NOT NULL,AGMT_SUB_NO VARCHAR2(4 BYTE) NOT NULL,NEED_REPAY_INT NUMBER(22,2),CURR_PERIOD NUMBER(4) NOT NULL ); CREATE TABLE EDW_INT_1 (…...

工业以太网交换机-SCALANCE X200 环网组态

1.概述 SCALANCE X200 系列交换机自从2004年8月推入市场&#xff0c;当时交换机只能接入环网&#xff0c;不能做环网管理器。在各个工业现场得到了广泛的应用。2007年5月发布了X200系列新的硬件版本平台&#xff0c;普通交换机可以用HSR&#xff08;高速冗余&#xff09;方法做…...

利用 Splashtop Enterprise 改善公司的网络安全

在我们日益数字化的世界中&#xff0c;对强有力的网络安全措施的需求从未像现在这样迫切。随着组织扩大其数字足迹并采用远程办公解决方案&#xff0c;他们面临着一系列不断变化的挑战。 威胁行为者不断寻找利用漏洞的新方法&#xff0c;这使得企业保持领先地位至关重要。俗话…...

mqbroker.cmd闪退(mqnamesrv.cmd能正常启动)

解决&#xff1a; 用户目录下面store文件&#xff08;如&#xff1a;C:\Users\Administrator\store或C:\Users\你的用户名\store&#xff09;&#xff0c;删除文件里面所有文件&#xff0c;再次启动即可。...

LeetCode--HOT100题(26)

目录 题目描述&#xff1a;142. 环形链表 II&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;142. 环形链表 II&#xff08;中等&#xff09; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返…...

HTTP 请求方法详解

HTTP 请求方法详解 请求方法 请求方法&#xff08;Request Methods&#xff09;是在 HTTP 请求中用于指定对目标资源执行的操作类型。每个请求都需要指定一个请求方法&#xff0c;以告知服务器要执行的操作。 以下是一些常见的 HTTP 请求方法及其主要用途&#xff1a; GET&…...

孤立随机森林(Isolation Forest)(Python实现)

目录 1 简介 2 孤立随机森林算法 2.1 算法概述 2.2 原理介绍 2.3 算法步骤 3 参数讲解 4 Python代码实现 5 结果 1 简介 孤立森林&#xff08;isolation Forest&#xff09;是一种高效的异常检测算法&#xff0c;它和随机森林类似&#xff0c;但每次选择划分属性和划…...

小程序如何自定义分享内容

小程序项目中遇到门票转增功能&#xff0c;用户可将自己购买的门票分享给好友&#xff0c;好友成功领取即得门票一张 1.自定义分享按钮 通过button里的open-type属性里的share参数即自可定义分享按钮 <button open-type"share">分享</button>2.配置分…...

SpringBoot整合WebSocket详解

环境&#xff1a;Springboot3.0.5 WebSocket介绍 WebSocket协议RFC 6455提供了一种标准化的方式&#xff0c;通过一个TCP连接在客户端和服务器之间建立全双工、双向的通信通道。它是一个不同于HTTP的TCP协议&#xff0c;但设计为在HTTP之上工作&#xff0c;使用80和443端口&am…...

伪原创神码ai怎么样【php源码】

这篇文章主要介绍了python汉化补丁包下载&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 火车头采集ai伪原创插件截图&#xff1a; ** Spyder汉化&#xff08;python汉化&…...

Air001基于Keil环境开发,使用airisp串口命令行烧录

Air001基于Keil环境开发&#xff0c;使用airisp串口命令行烧录 有人会有这样的疑惑&#xff0c;使用Keil平台开发&#xff0c;为什么不直接使用CMSIS-DAP直接烧录&#xff0c;还要使用串口方式来去单独烧录&#xff0c;不是我不想&#xff0c;目前使用合宙官方的Air103芯片版本…...

kubernetes 中的事件(event)简介以及如何收集event和基于event告警

引用另外一篇文章对k8s event的介绍 1.什么是kubernetes事件 Kubernetes Events 是一种 Kubernetes 资源对象&#xff0c;记录了某个组件在某个时间做了某个动作&#xff0c;用于展示集群内发生的情况&#xff0c;当 Kubernetes 集群中资源状态发生变化时&#xff0c;可以产生…...

C++小游戏贪吃蛇源码

graphics.h是针对DOS下的一个C语言图形库 (c也可以) 目前支持下载此头文件的常用的有两种: 1. EGE (Easy Graphics Engine)2. EasyX Graphics LibraryEGE, 全名Easy Graphics Engine, 是windows下的简易绘图库&#xff0c;是一个类似BGI(graphics.h)的面向C/C语言新手的图形库…...

【密码学】穴居人密码

穴居人密码 文字记载中&#xff0c;有时会把来自古希腊文化之前的各种记录作为密码学的例子&#xff0c;但称它们为密码学一定太不严格了&#xff0c;这是因为那些方法都太原始了。密码学的起源能追溯到多早&#xff0c;取决于你把密码学的相关定义确定得有多宽泛。大多数作者都…...

neo4j的CQL命令实例演示

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

vue3+ts使用antv/x6

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…...

wsl1 ubuntu通过宿主机代理连接外网

文章目录 环境变量配置apt换源apt安装&#xff0c;测试是否能通外网可能出现的问题&#xff1a;Temporary failure resolving 参考 背景&#xff1a;公司电脑是局域网&#xff0c;通过走代理来连接外网 wsl1 ubuntu想要通过来连接宿主机的局域网代理&#xff0c;访问外网 可以…...

ubuntu20.04 opencv4.2 安装笔记

参考&#xff1a; https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html Build with opencv_contrib # 1. Install minimal prerequisites&#xff0c; libgtk2.0-dev pkg-config 用来显示图像 sudo apt update && sudo apt install -y cmake g wget un…...

Android轻量级依赖注入框架illuminati:原理、实战与选型指南

1. 项目概述&#xff1a;当“光照派”遇上代码最近在GitHub上闲逛&#xff0c;发现一个名字相当吸睛的项目——LeeKyoungIl/illuminati。初看这个名字&#xff0c;你可能会联想到历史传说中那个神秘的组织&#xff0c;或者丹布朗小说里的情节。但在程序员的语境里&#xff0c;它…...

NVFP4:Blackwell架构下的4位低精度推理技术解析

1. NVFP4&#xff1a;Blackwell架构下的高效低精度推理新标准在AI模型部署的实际场景中&#xff0c;我们常常面临这样的困境&#xff1a;模型精度与推理效率就像天平的两端&#xff0c;提升一方往往意味着牺牲另一方。三年前当我第一次尝试将FP32模型量化到INT8时&#xff0c;即…...

项目实训——Werewolf-Agent 多智能体狼人杀中DSPy应用优化器优化

一、前言 上周&#xff0c;我在我们的项目中引入了dspy并使用它进行一个简单的测试&#xff0c;在测试过程中&#xff0c;我进行了几局游戏&#xff0c;发现预言家每次的输出结果都相差不大&#xff0c;这让我在玩起来比较无趣&#xff0c;因为在每个阶段&#xff0c;我都可以…...

农业数据主权危机:MCP 2026要求实时上传作业轨迹、油耗、工况等137个字段——你的ISOBUS网关真的合规吗?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;农业数据主权危机的本质与MCP 2026立法动因 农业数据主权危机并非技术失灵的表象&#xff0c;而是全球粮食价值链中权力结构失衡的深层投射。当跨国农企平台通过IoT传感器、卫星遥感和农机API持续采集田…...

通俗数学3-电和磁

背景 我很不想抄公式&#xff0c;今早看到一个文https://www.zhihu.com/question/21912411/answer/2031438531613209361 把散和旋讲得太好&#xff0c;借着这个电磁的推导&#xff0c;正好正经做一个在微元的电磁数学建模。在光和电合成中https://blog.csdn.net/wjcroom/artic…...

3分钟搞定Blender UV混乱?这个插件让你告别手动调整的烦恼!

3分钟搞定Blender UV混乱&#xff1f;这个插件让你告别手动调整的烦恼&#xff01; 【免费下载链接】UvSquares Blender addon for reshaping UV quad selection into a grid. 项目地址: https://gitcode.com/gh_mirrors/uv/UvSquares 你是否曾在Blender中为杂乱的UV布局…...

告别“唯大厂论”:全球财富 500 强实体企业 IT 核心岗位的隐形红利

在当前的留学生家庭中&#xff0c;关于计算机科学&#xff08;CS&#xff09;与工程类专业的就业规划&#xff0c;往往笼罩着一种高度趋同的“名企焦虑”。许多家长和学生将目光死死锁定在硅谷的科技巨头或少数几家头部互联网大厂上。为了挤进这些竞争白热化的窄门&#xff0c;…...

2026最新亲测3款自动生成会议纪要免费神器,10分钟出稿好用到哭!

做技术的要整理需求评审会&#xff0c;做产品的要追项目进度记决策&#xff0c;做销售要整理客户拜访录音&#xff0c;做调研的要转用户访谈。试完2026年3款亲测有效的自动会议纪要工具&#xff0c;我直接给结论&#xff1a;听脑AI是同类工具中最值得用的&#xff0c;没有之一。…...

【MCP 2026国产化部署终极指南】:覆盖麒麟V10/统信UOS/海光/鲲鹏全栈适配的7大避坑清单与3小时极速上线方案

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;MCP 2026国产化部署全景认知与演进路径 MCP&#xff08;Model Control Platform&#xff09;2026 是面向信创生态深度适配的新一代模型管控平台&#xff0c;其国产化部署已从“可用”迈向“好用、可控、可审计…...

国产服务器适配MCP 2026的“最后一公里”难题(独家拆解):BIOS微码更新失败、TPM2.0固件版本冲突、SM2国密模块初始化超时——3个99%工程师踩过的硬核深坑

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;MCP 2026国产化适配的全局技术图谱与挑战定位 MCP&#xff08;Model Control Protocol&#xff09;2026 是面向高可信智能系统的新一代控制协议标准&#xff0c;其国产化适配不仅涉及指令集、操作系统与…...