用户管理中心——数据库设计用户注册逻辑设计

用户管理中心——数据库设计&用户注册逻辑设计

  • 规整项目目录
  • 1. 数据库自动生成器的使用
    • 实现基本的数据库操作(操作user表)
  • 2. 注册逻辑的设计
    • (1) 写注册逻辑
    • (2) 实现
    • (3) 测试代码
  • 3. 遇到的问题

规整项目目录

在这里插入图片描述
utils–存放工具类,比如加密转换等

1. 数据库自动生成器的使用

在这里插入图片描述

实现基本的数据库操作(操作user表)

模型 user 对象 => 和数据库关联,自动生成

【操作user表中的数据,从中查询数据,(在model中)先创建一个user对象,和数据库字段关联】

使用mybatis-plus自动生成
使用插件MyBatisX ,自动根据数据库生成:
在这里插入图片描述

在这里插入图片描述

代码迁移,创建测试类

在这里插入图片描述
在这里插入图片描述
安装一个插件
在这里插入图片描述

在创建的对象上按Alt + Enter,可以生成调用这个对象所有的set方法。

在这里插入图片描述
ctrl+P :可以查看这个方法要用哪些参数

最后的测试类:
在这里插入图片描述

2. 注册逻辑的设计

(1) 写注册逻辑

在这里插入图片描述

(2) 实现

 @Overridepublic long userRegister(String userAccount, String userPassword, String checkPassword) {// 1. 校验// if(userAccount == null || userPassword == null || checkPassword == null)if(StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)){return -1;}if(userAccount.length() < 4){return -1;}if(userPassword.length() < 8 || checkPassword.length() < 8){return -1;}// 账户不能包含特殊字符String validPattern = "\\pP|\\pS|\\s+";Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);if(matcher.find()){return -1;}// 密码与校验密码相同if(!userPassword.equals(checkPassword)){return -1;}// 账户不能重复——从数据库中查询QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("userAccount", userAccount);long count = userMapper.selectCount(queryWrapper);if(count > 0){return -1;}// 2. 加密final String SALT = "yupi";String newPassword = DigestUtils.md5DigestAsHex((SALT + "mypassword").getBytes());// 3. 插入数据User user = new User();user.setUserAccount(userAccount);user.setUserPassword(userPassword);boolean saveResult = this.save(user);if(!saveResult){return -1;}return user.getId();}

(3) 测试代码

@Testvoid userRegister() {// 非空String userAccount = "hhhhh";String userPassword = "";String checkPassword = "12345678";long result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 账号长度不小于4位userAccount = "yu";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 密码不小于8位userAccount = "hhhhh";userPassword = "123456";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 账户不能重复userAccount = "yupi";userPassword = "12345678";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 账户不包含特殊字符userAccount = "yu pi";userPassword = "12345678";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);// 密码和校验密码不同userAccount = "hhhhh";userPassword = "12345678";checkPassword = "123456789";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertEquals(-1, result);checkPassword = "12345678";result = userService.userRegister(userAccount, userPassword, checkPassword);Assertions.assertTrue(result > 0);}

3. 遇到的问题

  1. 问题:Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘user_account’ in ‘field list’
    ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column ‘user_account’ in ‘field list’

在这里插入图片描述

原因:查找mybatis-plus官网配置文件,发现自动将下划线映射为驼峰

在这里插入图片描述
解决: 修改配置文件
在这里插入图片描述

  1. 如何解决idea插件安装过慢?
    两步带你解决IDEA 插件下载安装慢、超时、不成功问题
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息系统架构基本概念及发展_1.概述和发展

信息系统架构&#xff08;Information Systems Architecture&#xff0c;ISA&#xff09;是一种体系结构&#xff0c;它反映了一个政府、企业或事业单位信息系统的各个组成部分之间的关系&#xff0c;以及信息系统与相关业务&#xff0c;信息系统与相关技术之间的关系。 1.信息…

leetCode33. 搜索旋转排序数组

leetCode33. 搜索旋转排序数组 题目思路 此题的特点是&#xff1a;排好序循环的数组&#xff1a;特点&#xff1a;可以分为两个区间&#xff0c;一半升序&#xff0c;一半降序&#xff0c;或者全部升序 我们可以用二分法&#xff0c;找出升序 到降序的那个临界值&#xff0c;并…

基于Springboot 的 Excel表格的导入导出

首先 &#xff0c;引入相关依赖EasyPOI <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.4.0</version></dependency> 编写实体类&#xff1a; Data AllArgs…

产品需求文档怎么写?超详细的产品需求文档PRD模板来了!

产品需求文档怎么写&#xff1f;如何写一份简洁明了、外行人看了就能秒懂的产品需求文档呢&#xff1f;今天这篇文章&#xff0c;就来和大家分享如何编写一份高质量的产品需求文档 PRD&#xff01; 下图是来自 boardmix 模板社区的「产品需求文档」模板&#xff0c;它给出了一…

2024.05.07作业

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//窗口相关设置this->resize(540,415);this->setFixedSize(540,415);//窗口标题this->setWindowTitle…

C++变量的作用域与存储类型

一 变量的作用域和存储类型 1 变量的作用域(Scope) 指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量(Local Variable)和全局变量(Global Variable) 1&#xff09;局部变量(Local Variable) 在语句块内定义的变量 形参也是局部变量 特点&#xff1a; 生存期是…

用vim或gvim编辑程序

vim其实不难使用&#xff0c;学习一下就好了。简单功能很快学会。它有三种模式&#xff1a;命令模式&#xff0c;编辑模式&#xff0c;视模式。打开时在命令模式。在命令模式下按 i 进入编辑模式&#xff0c;在编辑模式下按<Esc>键退出编辑模式。在命令模式按 :wq 保存文…

Linux —— 信号(3)

Linux —— 信号&#xff08;3&#xff09; Core dump为什么core默认是被关闭的阻塞信号信号其他相关常见概念信号递达信号未决信号阻塞两者的区别信号的结构 信号集操作函数一个简单使用例子sigpending的使用例子 我们今天接着来了解信号&#xff1a; Core dump 大家不知道有…

Linux网络-PXE高效批量网络装机(命令+截图详细版)

目录 一.部署PXE远程安装服务 1.PXE概述 1.1.PXE批量部署的优点 1.2.要搭建PXE网络体系的前提条件 2.搭建PXE远程安装服务器 2.1.修改相关网络配置&#xff08;仅主机模式&#xff09; 2.2.关闭防火墙&#xff08;老规矩&#xff09; 2.3.保证挂载上 2.4.准备好配置文…

(AI Web、ChatGPT Native、Ai Loading、AI Tools、知豆AI)

目录 1、AI Web 2、ChatGPT Native 3、Ai Loading 4、AI Tools 5、知豆AI 1、AI Web

SQL中的top、limit以及rownum

在SQL查询的时候&#xff0c;需要限制输出的条数&#xff0c;然后对于不同的数据库有不同的限制条数的关键字 在SQL Sever中&#xff0c;限制条数的是top&#xff0c;用法如下&#xff1a; SELECT top 10 * FROM table1在MySQL中&#xff0c;限制条数的是limit&#xff0c;用…

呆滞物料规范管理了,问题就好办了

对于制造企业来说&#xff0c;库存是生存和发展的重要保障&#xff0c;过高的库存会占用企业大量的资金和管理成本&#xff0c;影响企业的正常生产&#xff0c;然而多数中小制造企业还在用人工干预管理&#xff0c;如何控制呆滞物料成为仓储管理的一大难题。 什么是呆滞料 呆滞…

PHP操作Mongodb

小编复习MongoDB,基础请参考&#xff1a;MongoDB-CSDN博客&#xff08;主要是linux操作&#xff09; PHP操作 <?php /** * 注意 本类仅适用于PHP7.0版本以上 * 请注意&#xff1a;mongoDB 支持版本 3.2 * mongo具体参数参考&#xff1a; https://docs.mongodb.com/…

为什么不建议在 Vue <style> 中使用 scoped?

前言 亲爱的小伙伴&#xff0c;你好&#xff01;我是 嘟老板。我们使用 Vue 开发页面时&#xff0c;经常需要在 <style> 标签下编写样式。不知你是否留意&#xff0c;在 <style> 标签下有一个属性经常出现 - scoped。你知道它起到什么作用吗&#xff1f;原理是怎样…

[Java EE] 多线程(九):ReentrantLock,Semaphore,CountDownLatch与线程安全的集合类(多线程完结)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

PE文件(四)FileBuffer-ImageBuffer作业

C语言实现如下功能 2.编写一个函数&#xff0c;将RVA的值转换成FOA 将文件加载到内存时&#xff0c;已知一个数据在内存中的地址&#xff0c;将此地址转化成文件在硬盘上时的相对于文件起始地址的文件偏移地址。即将虚拟内存偏移地址转换成文件偏移地址。 说明&#xff1a;这里…

ssm+vue的数据学院教务管理系统。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的数据学院教务管理系统。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spr…

20个入门级Python项目

很多刚刚入门python的同学除了书上、老师讲解的1、2个demo示例之外&#xff0c;基本上很难找到适合练手的入门级Python项目。 作者不辞辛苦&#xff0c;花了很长时间整理了20个适合练手的实例项目 下面这20个练手项目全部去是免费的&#xff0c;大家可以任意下载&#xff0c;…

记一次DNS故障导致用户无法充值的问题(上)

背景&#xff1a; 刚刚过去了五一劳动节&#xff0c;回来后一上班接到客服运营团队反馈的节日期间的问题&#xff0c;反馈有部分用户无法充值。拿到的反馈资料有&#xff1a; 无法充值操作视频、问题时间、手机机型、手机网络情况。 1、从视频中看到用户点击支付后没有任何反…

ANSYS许可分析工具

在工程设计与仿真领域&#xff0c;ANSYS软件作为行业领导者&#xff0c;为企业提供了强大的支持。然而&#xff0c;随着业务的发展和软件版本的升级&#xff0c;如何有效地分析和管理ANSYS许可证&#xff0c;确保资源的合理配置和高效利用&#xff0c;成为企业面临的重要问题。…